2012-05-30 84 views
0

從我的研究和理解來看,ContextMenuStrip應該是ContextMenu的繼承者,並且爲了保持我的代碼更新和完善,我開始着手替換ContextMenu的一個實例。在ContextMenuStrip中複製ContextMenu構造函數

以前,給一個菜單項與單擊處理項目的子菜單,我在做這樣的事情:

MenuItem[] clearMenu = {  
           new MenuItem("All", clear_all_click), 
           new MenuItem("Text", clear_text_click), 
           new MenuItem("Images", clear_images_click), 
           new MenuItem("Audio", clear_audio_click) 
          }; 

    notifyIcon.ContextMenu.MenuItems.Add(new MenuItem("Clear", clearMenu)); 

enter image description here

我不知道如果我失去了一些東西簡單,但是如何通過ContextMenuStrip實現類似的功能? ToolStripMenuItem沒有重載的構造函數,它允許你添加一個自己的數組來形成一個子菜單。目前也沒有一種方法來添加基於從的ContextMenuStrip選擇特定項目指標,如項目:

notifyIcon.ContextMenuStrip.Items["Clear"].Add 

有,它可以讓一個構造函數實例化,據推測,帶的ToolStripItem數組子菜單(s),但它是一個抽象類,所以你不能直接調用它。

想法?或者我沒有通過樹木看到森林。

回答

1

你可以做到你想要的。但要訪問通過鍵名,您必須設置名稱:

ToolStripItem[] newItems = { 
        new ToolStripMenuItem("All", null, DoThis), 
        new ToolStripMenuItem("Text", null, DoThis) 
       }; 

this.contextMenuStrip1.Items.Add(new ToolStripMenuItem("Clear", null, newItems) {Name="Clear"}); 

var clearItem = this.contextMenuStrip1.Items["Clear"] as ToolStripMenuItem; 
+0

謝謝,約翰。這很好。 –