2012-04-06 66 views
2

我相信這個答案已經發布過。原諒我,因爲我想我只是沒有想到正確的搜索字符串。c#如何在運行時添加contextMenuStrip項目?

我有一個上下文菜單條被分配到我的撥號盤的托盤圖標上。這個想法是讓用戶設置各種數字並從菜單中選擇用戶定義的號碼並啓動撥號。

所以菜單彈出Presets, Setup,& Exit。我想要預設菜單打開列出用戶定義號碼的新樹。每次應用程序加載時,我也希望這從xml文件中填充。

我的問題是,我不知道如何動態填充子菜單項並給它一個函數。

那麼我如何在啓動時將預設的用戶自定義號碼添加到預設 - >(userNumber1, usernumber2, userNumber3),然後在點擊時調用dial()函數?


所以我找到了如何添加到列表中...我現在覺得很傻,對於任何想要知道該名單的人,該名單中的名稱都會被給出。 IM我的情況下,name屬性是「presetsToolStripMenuItem」

所以將項目添加到它調用的名字

presetsToolStripMenuItem.DropDownItems.Add(string text) 

沒有繼續前進。我現在試圖弄清楚如何將事件分配給新添加的函數。我確實找到了

presetsToolStripMenuItem.DropDownItems.Add(string text, image, eventargs) 

我正在爲這個掙扎。也許我需要停下來,稍後再回來。也許如果有人能夠給我提供一個使用這條線來調用function();的例子,我會非常感激。

+0

WPF或Windows窗體? – Polity 2012-04-06 02:35:14

+0

這是一個Windows窗體應用程序。 – eatumup 2012-04-06 03:17:41

回答

4

對於任何感興趣的人,我想出了在運行時添加上下文菜單項以及調用函數的解決方案。

如前所述,要將子菜單項添加到父類別,請使用parent.name。所以在我的情況下,預設的菜單項名稱是「presetsToolStripMenuItem」

要添加函數,我使用了3參數方法。

ToolStripMenuItem.DropdownItems.Add("string name", image, eventargs); 

所以我的代碼如下所示:

presetsToolStripMenuItem.DropDownItems.Add("added2", null, disp); 

void disp(object sender, EventArgs e) 
    { 
     MessageBox.Show("It works!"); 
    } 
+1

如果這個列表是在用戶的行爲中填充的,那麼在添加項目以避免重複之前,您將希望使用'ToolStripMenuItem.DropdownItems.Clear()'預備列表。 – Wayne 2016-09-17 20:00:42

相關問題