C# 如何仅当用户单击树视图中的根节点时才显示上下文菜单?
我有一个树状视图和上下文菜单。我只想在右键单击根节点而不是子节点时显示关联菜单 这就是我目前所拥有的。即使我右键单击子节点,也会显示上下文菜单。如何更改此设置,使菜单仅在我右键单击根节点时显示?可能吗C# 如何仅当用户单击树视图中的根节点时才显示上下文菜单?,c#,.net,winforms,treeview,contextmenu,C#,.net,Winforms,Treeview,Contextmenu,我有一个树状视图和上下文菜单。我只想在右键单击根节点而不是子节点时显示关联菜单 这就是我目前所拥有的。即使我右键单击子节点,也会显示上下文菜单。如何更改此设置,使菜单仅在我右键单击根节点时显示?可能吗 if(e.Button == MouseButtons.Right) { // Select the clicked node treeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y); if(treeView1.Sel
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的值,并确保它为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的检查,因为您不希望在节点未单击时显示上下文菜单,但需要添加对父节点的检查,因为这会告诉您该节点是否为根节点。以编程方式指示正在使用逻辑AND的方式,这是C中的&&运算符。您还可以使用Level属性:
这就成功了。非常感谢你。
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