2009-10-22 21 views
7

Chcę dodać wszystko, co jest napisane w polu tekstowym do menustripu. W pliku Plik> Ostatnie wyszukiwania mam.Jak programowo dodawać elementy do menustripu?

Jak mogę programowo? Czy mogę dynamicznie przypisać procedurę obsługi zdarzeń, aby po kliknięciu elementu X w tym podfolderze tekst został skopiowany BACK do pola tekstowego?

EDIT: Jak mogę programowo wezwać folderze Busquedas Recientes (PIC)

alt text

+0

Który IDE lub platforma/język używasz? (na przykład C z Win32 API, C# na .NET Framework, itp.) – Achimnol

Odpowiedz

8

Można to zrobić, korzystając z parametru object sender w obsługi zdarzeń. Większość tego jest poza moim zasięgiem, więc jestem tylko zgadywania, że to się skompiluje, ale powinno zacząć.

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

Pierwsza metoda działa. Wyszukiwanie jest dodawane, ale na najwyższym poziomie. Potrzebuję go dodać do tej heirarchii: Plik> RecentSearches> THINGS GO HERE. Jakaś pomoc? –

+0

Zobacz moje zmiany dotyczące konkretnej lokalizacji. –

4

To dość proste. Można wykonać następujące czynności:

ToolStripMenuItem menuItem 

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

Następnie, jeżeli zdarzenie Click nie działa (miałem problemy, gdy nie wykryje właściwej pozycji menu), można dodać „DropDownItemClicked” zdarzenie do MENUITEM . i aby uzyskać tekst klikniętego elementu, wykonaj:

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

Mam nadzieję, że to pomoże.

Och i nie zapomnij również usunąć wydarzenia. Zapomniałem o tym zrobić z wszystkimi dynamicznymi menu, które stworzyłem i jakoś zjadłem połowę mojej pamięci. : D

+0

Lol. : P +1 dla ostatniego komentarza. Zapisałem mi kolejne pytanie xD –

Powiązane problemy