2010-05-17 74 views
2

我有一個有幾個選擇的上下文菜單。如果用戶選擇一個特定的選擇,我想第二個菜單中的選項列表出現。這些選擇將來自數據存儲並且對該用戶來說是唯一的。在Winforms中動態生成第二個上下文菜單

我看到在設計器中,您可以靜態添加一組選項以顯示用戶進行選擇。但是,當你需要數據來源而不是在設計者中進行設計時,你會做什麼?

回答

2

一種方法是製作級聯菜單:在上下文菜單中,添加一個項目以充當「父項目」項目,並向父項目添加一個子菜單項目。然後附上父件的DropDownOpening事件的事件處理程序,並添加這樣的事情吧:

private void ParentMenuItem_DropDownOpening(object sender, EventArgs e) 
{ 
    IEnumerable<string> items = GetItems(); 
    _parentMenuItem.DropDownItems.Clear(); 
    foreach (var item in items) 
    { 
     _parentMenuItem.DropDownItems.Add(item); 
    } 
} 

這將在每次打開時(根據需要添加緩存)填充子菜單。

從技術上講,這將在不添加虛擬子項的情況下工作,但通過添加子項,父菜單將顯示指示存在級聯子菜單的箭頭。

0

我想補充以下建立的事件處理程序的新項目:

private void ParentMenuItem_DropDownOpening(object sender, EventArgs e) 
{ 
    IEnumerable<string> items = GetItems(); 
    _parentMenuItem.DropDownItems.Clear(); 
    int i=0; 
    foreach (var item in items) 
    { 
     _parentMenuItem.DropDownItems.Add(item); 
     _parentMenuItem.DropDownItems[i].click += new EventHandler(menuItem_click); 
     i++; 
    } 
}`enter code here` 
+1

有者均基於編輯頁面的工具欄上的'代碼formatting'按鈕:-) – Justin 2010-11-19 22:36:15