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

时间:2010-09-18 10:17:06

标签: c# winforms treeview

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

根 | - > some.txt(在运行时添加的文本文件)   | - > Child(some.txt的子项)       | - > child1(孩子的孩子)

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

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

2 个答案:

答案 0 :(得分:9)

对于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;
  }
}

答案 1 :(得分:0)

// Remove all the Empty sub menu items
int counter = MainMenu.Items[1].ChildItems.Count;
for(int i=0; i<counter;i++)
{
    foreach (MenuItem item in MainMenu.Items[1].ChildItems)
    {
        if (item.ChildItems.Count != 0)
            continue;
        MainMenu.Items[1].ChildItems.Remove(item);
        break;
    }
}