Eri*_*rik 2 .net c# treeview contextmenu winforms
我有一个TreeView和一个上下文菜单.我只想在右键单击ROOT节点而不是子节点时显示上下文菜单.
这就是我到目前为止所拥有的.即使我右键单击子节点,也会显示"上下文菜单".如何更改此设置,以便仅在我右键单击根节点时才显示菜单?可能吗?
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)
}
}
Run Code Online (Sandbox Code Playgroud)
是的,这是可能的,但您需要在if语句中添加一些逻辑,以验证用户单击的节点是否为根节点.
但是我们如何确定它是否是根节点?好吧,通过思考,我们可以将根节点定义为没有任何父节点的根节点.所以你可以简单地检查它的Parent属性,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)
}
}
Run Code Online (Sandbox Code Playgroud)
您希望保留节点本身不是的检查null,因为您不希望在没有单击节点时显示上下文菜单,但是您需要添加对父节点的检查,因为它会告诉您是否或者它不是根节点.以编程方式指示使用逻辑AND的方式,它是&&C#中的运算符.
| 归档时间: |
|
| 查看次数: |
5836 次 |
| 最近记录: |