是否可以根据Treeview上的选择禁用上下文菜单项

我将为树视图提供某种节点,如下所示

Root | – > some.txt(在运行时添加的文本文件)| – > Child(some.txt的子项)| – > child1(child for child)

我设计了我的上下文菜单,其中包含一些选项,如New和Remove

我需要的是当我点击Root,孩子或孩子时我想禁用删除选项

对于ContextMenu,您可以在显示菜单之前处理ContextMenu.Popup事件并启用/禁用菜单选项。

对于ContextMenuStrip,您可以使用Opening事件执行相同操作。

例如,如果使用菜单项Tag属性来确定是否支持删除(这仅用于示例)。 你可以做这样的事情

private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) { if ((int)treeView1.SelectedNode.Tag == 1) { removeToolStripMenuItem.Enabled = true; } else { removeToolStripMenuItem.Enabled = false; } } 
 // Remove all the Empty sub menu items int counter = MainMenu.Items[1].ChildItems.Count; for(int i=0; i