我有一个TreeView,我需要两件事。
这两个选项都会给我一个不同的ContextMenuStrip
我的两个程序现在支持这种类型的点击。
特定节点点击:
var someNode = e.Node.Tag as SomeNode;
if (someNode != null)
{
someContextMenu.Show(someTree, e.Location);
return;
}
树上的任何地方点击:
问题是Anywhere on the tree click
事件会在检查我是否点击节点或TreeView
的空白点之前触发。
任何想法我怎么能改变这种行为?
答案 0 :(得分:2)
假设你在询问winforms。
您可以使用TreeView.HitTest方法返回TreeViewHitTestInfo,您可以知道是否有节点。
答案 1 :(得分:0)
private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
TreeViewHitTestInfo info = treeView1.HitTest(e.Location);
treeView1.SelectedNode = info.Node;
if (info.Node == null)
{
contextMenuStrip1.Show(Cursor.Position);
}
else
{
contextMenuStrip2.Show(Cursor.Position);
}
}
}
或根据您的需要启动鼠标。您也可以使用GetNodeAt(e.Location)而不是TreeViewHitTestInfo类。