我有一个 TreeView 和一个上下文菜单。我只想在右键单击根节点而不是子节点时显示上下文菜单。
这就是我到目前为止所拥有的。即使我右键单击子节点,也会显示上下文菜单。如何更改此设置,以便仅在右键单击根节点时才显示菜单?可能吗?
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
语句中添加一些逻辑,以验证用户单击的节点是否为根节点。
但是我们如何知道它是否是根节点呢?好吧,仔细想想,我们可以将根节点定义为没有任何父节点的节点。所以你可以简单地检查Parent
property 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# 中的 &&
运算符。
关于c# - 如何仅当用户单击 TreeView 中的根节点时才显示上下文菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5692779/