2010-09-18 45 views
4

我會有某種節點的樹狀如下是否有可能禁用基於樹形選擇

根 上下文菜單項| - > some.txt(文本文件,該文件在運行時添加) | - >子(孩子some.txt) | - > child1(孩子的孩子)

我設計我的上下文菜單中的一些選項,新的和刪除

我需要的時候我righclick是在根,孩子或孩子我想禁用刪除選項

回答

9

對於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; 
    } 
} 
+0

但selectednode.tag我總是得到Null值 – Dotnet 2010-09-18 11:14:12

+0

嘿,我設置的標籤屬性,但我無法禁用toolstripmenu – Dotnet 2010-09-18 11:19:17

+0

@Dorababu,是選擇的節點在樹上?我測試了這個,它確實有效。你能分享一些你的代碼嗎?你是否在事件處理程序中設置了一個斷點並檢查事件是否被觸發? – 2010-09-18 13:07:48

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; 
    } 
} 
相關問題