【发布时间】:2010-09-18 10:17:05
【问题描述】:
我将有一些树视图的节点,如下所示
根 |-> some.txt(在运行时添加的文本文件) |-> 孩子(一些.txt 的孩子) |-> child1(child for child)
我在上下文菜单中设计了一些选项,例如新建和删除
我需要的是,当我右键单击 Root、孩子或孩子时,我想禁用删除选项
【问题讨论】:
我将有一些树视图的节点,如下所示
根 |-> some.txt(在运行时添加的文本文件) |-> 孩子(一些.txt 的孩子) |-> child1(child for child)
我在上下文菜单中设计了一些选项,例如新建和删除
我需要的是,当我右键单击 Root、孩子或孩子时,我想禁用删除选项
【问题讨论】:
对于 ContextMenu,您可以在显示菜单之前处理 ContextMenu.Popup 事件并启用/禁用菜单选项。
对于 ContextMenuStrip,您可以使用 Opening 事件执行相同操作。
例如,如果您使用菜单项标记属性来确定是否支持删除(这仅用于示例)。你可以做一些这样的事情
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<counter;i++)
{
foreach (MenuItem item in MainMenu.Items[1].ChildItems)
{
if (item.ChildItems.Count != 0)
continue;
MainMenu.Items[1].ChildItems.Remove(item);
break;
}
}
【讨论】: