2009-10-22 16 views
7

Ich möchte, was in einem Textfeld in eine Menustrip geschrieben wird. In der Datei> Letzte Suchvorgänge habe ich.Wie fügen Sie Dinge programmatisch zu einer Menustrip hinzu?

Wie kann ich programmatisch tun? Und kann ich einen Event-Handler dynamisch zuweisen, so dass, wenn ein Benutzer auf X-Objekt in diesem Unterordner klickt, der Text zurück in das Textfeld kopiert wird?

EDIT: Wie kann ich auf den Ordner programmatisch nennen Búsquedas Recientes (in pic)

alt text

+0

Welche IDE oder Plattform/Sprache verwenden Sie? (z. B. C mit Win32-API, C# in .NET Framework oder usw.) – Achimnol

Antwort

8

Sie dies durch die Nutzung des object sender Parameter in den Ereignishandler tun. Das meiste davon ist von der Spitze meines Kopfes, so bin ich nur Raten, dass es kompilieren wird, aber es sollte Sie beginnen.

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

Die erste Methode funktioniert irgendwie. Die Suche wird hinzugefügt, aber auf der obersten Ebene. Ich brauche es, um in dieser Hierarchie hinzugefügt zu werden: File> RecentSearches> DINGE GO HIER. Irgendeine Hilfe? –

+0

Sehen Sie meine Änderungen für einen bestimmten Standort einfügen. –

4

Es ist ziemlich geradlinig. Sie können wie folgt vorgehen:

ToolStripMenuItem menuItem 

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

Anschließend, wenn das Click-Ereignis nicht funktioniert (ich hatte Probleme, wo es wäre den richtigen Menüpunkt nicht erkennen), können Sie ein „DropDownItemClicked“ Ereignis zum menuItem hinzufügen . und um den Text des Artikels zu erhalten, auf den Sie geklickt haben, tun Sie Folgendes:

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

Ich hoffe, dass hilft.

Oh, und vergessen Sie nicht, das Ereignis auch zu entfernen. Ich habe vergessen, dies mit all den dynamischen Menüs zu tun, die ich kreiert hatte, und irgendwie endete meine halbe Erinnerung. : D

+0

Lol. : P +1 für den letzten Kommentar. Sparte mir eine andere Frage xD –

Verwandte Themen