2009-10-22 77 views
7

我想添加任何寫在文本框中的菜單。在我有文件>最近搜索的東西。如何以編程方式將內容添加到menustrip?

我該如何編程?我可以動態分配一個事件處理程序,以便當用戶單擊該子文件夾中的X項目時,文本被複制回到文本框?

編輯:我如何編程(中圖)的文件夾Busquedas Recientes上調用

alt text

+0

您使用哪種IDE或平臺/語言? (例如,使用Win32 API的C,使用.NET Framework的C#等)。 – Achimnol 2009-10-22 15:46:58

回答

8

您可以趁着object sender參數的事件處理程序做到這一點。大多數這是關閉我的頭頂,所以我只是猜測它會編譯,但它應該讓你開始。

void AddMenuItem(string text, string action) 
{ 
    ToolStripMenuItem item = new ToolStripMenuItem(); 
    item.Text = text; 
    item.Click += new EventHandler(item_Click); 
    item.Tag = action; 

    //first option, inserts at the top 
    //historyMenu.Items.Add(item); 

    //second option, should insert at the end 
    historyMenuItem.DropDownItems.Insert(historyMenuItem.DropDownItems.Count, item); 
} 

private void someHistoryMenuItem_Click(object sender, EventArgs e) 
{ 
    ToolStripMenuItem menuItem = sender as ToolStripMenuItem; 

    string args = menuItem.Tag.ToString(); 

    YourSpecialAction(args); 
} 
+0

第一種方法比較有效。搜索正在被添加,但是在最頂層。我需要它被添加到這個heirarchy:文件> RecentSearches>事情到這裏。任何幫助? – 2009-10-22 15:53:16

+0

查看我編輯的特定位置插入。 – 2009-10-22 16:04:27

4

這是相當直接的。你可以做到以下幾點:

ToolStripMenuItem menuItem 

foreach (string text in collectionOfText) 
{ 
    ToolStripMenuItem foo = new ToolStripMenuItem(text); 
    foo.Click += new EventHandler(ClickEvent); 
    menuItem.DropDownItems.Add(foo); 
} 

隨後,如果Click事件不工作(我有麻煩的地方就無法檢測到正確的菜單項),您可以在「DropDownItemClicked」事件添加到菜單項。並獲得您點擊的項目的文本,你做:

private void DropedDownItemClickedEvent(object sender, ToolStripItemClickedEventArgs e) 
{ 
    string text = e.ClickedItem.Text; 
} 

我希望有所幫助。

哦,不要忘記刪除事件。我忘記了用我創建的所有動態菜單做到這一點,並以某種方式結束了我的一半記憶。 :D

+0

大聲笑。 :最後評論的P +1。給我另一個問題xD – 2009-10-22 16:02:03

相關問題