如何在用户单击TreeView中的根节点时才显示上下文菜单?
本文关键字:显示 上下文 菜单 根节点 用户 单击 TreeView | 更新日期: 2023-09-27 17:50:35
我有一个树视图和一个上下文菜单。我想显示上下文菜单只有当我右键单击根节点,而不是子节点。
这是我目前所知道的。这显示了上下文菜单,即使我右键单击子节点。如何更改这一点,以便仅在右键单击根节点时才显示菜单?这可能吗?
if(e.Button == MouseButtons.Right)
{
// Select the clicked node
treeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y);
if(treeView1.SelectedNode != null)
{
myContextMenuStrip.Show(treeView1, e.Location)
}
}
是的,这是可能的,但是您需要在if
语句中添加一些逻辑,以验证用户单击的节点是根节点。
但是我们怎么知道它是不是根节点呢?仔细想想,我们可以把根节点定义为没有父节点的节点。因此,您可以简单地检查TreeNode
的Parent
属性,并确保它是null
。
将你的代码修改如下:
if (e.Button == MouseButtons.Right)
{
// Select the clicked node
treeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y);
if (treeView1.SelectedNode != null && treeView.SelectedNode.Parent == null)
{
myContextMenuStrip.Show(treeView1, e.Location)
}
}
您希望保留节点本身不是null
的检查,因为您不想在他们没有单击节点时显示上下文菜单,但是您需要添加父节点的检查,因为这告诉您它是否是根节点。你在编程上指示的方式是使用逻辑与,这是c#中的&&
运算符。
检查您单击的节点是否为根节点,而不是检查它是否为null
。
您也可以使用Level
属性:
http://msdn.microsoft.com/EN-US/library/386b25wy (v = VS.110 d = hv.2) . aspx
If e.Button = MouseButtons.Right Then
' Select the clicked node
treeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y)
If treeView1.SelectedNode.Level = 0 Then
myContextMenuStrip.Show(treeView1, e.Location)
End If
End If