簡體   English   中英

如何將字典添加到ContextMenuStrip

[英]How to add a dictionary to a ContextMenuStrip

我目前正在嘗試將狀態值字典添加到上下文菜單欄中。 我遇到的主要問題是如何將所選字典項目的鍵值傳遞給click事件。

Dictionary<int, string> statusList = getStatusList();

if (statusList.Count > 0)
{
    Dictionary<int, ToolStripItem> statusMenu = new Dictionary<int, ToolStripItem>();

    foreach (var keyValuePair in statusList)
    {
         statusMenu.Add(keyValuePair.Key, new ToolStripMenuItem() { Text = keyValuePair.Value.ToString(), Image = Resources.Refresh });
         //statusMenu[statusMenu.Count - 1, statusMenu].Click += new EventHandler(MenuOption_Click_Handler); This is where I am confused
    }
    datagridview1.ContextMenuStrip.Items.Add(new ToolStripMenuItem("Set Status to", Resources.Refresh, statusMenu.Values.ToArray()));
}

我可以輕松地獲取字典值的數組。 我只是想知道是否有可能單擊上下文菜單中的狀態以將Key傳遞給save方法?

因此,例如說statusList包含以下值:
{[1,狀態1]}
{[2,狀態2]}
{[5,Status3]}

因此,如果加載上下文菜單,則單擊Status3,則需要將單擊狀態鍵5的事件傳遞給ClickEvent。 現在,它僅檢測值(Status3)。 任何幫助深表感謝!

為什么不重命名工具提示控件? id是Dictionary的關鍵字,因此它應該與眾不同。 無論如何,任何控件都必須具有名稱。

這是一個主意。 您可以使用前綴ToolStrip (或任何您喜歡的名稱)+ Key命名控件,並在以后獲取它。 喜歡:

var newItem= new ToolStripMenuItem() { 
Text = keyValuePair.Value.ToString(), 
Image = Resources.Refresh,
Name="ToolStrip" + keyValuePair.Key };

newItem.Click +=new EventHandler(MenuOption_Click_Handler);
statusMenu.Add(keyValuePair.Key,newItem);

MenuOption_Click_Handler方法中:

public void MenuOption_Click_Handler(object sender,EventArgs e)
{
    var id = Convert.ToInt32(((ToolStripMenuItem)sender).Name.Substring(0,9));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM