2012-05-17 8 views
6

Hallo Ich habe ein ToolStripMenu mit einem "Favoriten" -Menü, das während der Laufzeit meiner WinForms-App Unterelemente hinzufügen möchte. Ich habe eine Datagridview, auf die ich mit der rechten Maustaste klicke, um ein Kontextmenü anzuzeigen, das die Option "Zu Favoriten hinzufügen" enthält. Wenn dieses Ereignis ausgelöst wird, möchte ich ein Element hinzufügen, das vielleicht einen Text aus der ausgewählten Zeile aus dem Datagriview (dies weiß ich bereits) in dieses Favoritenmenü einfügt. Der knifflige Teil ist, ich muss Code für meine newlyCreatedToolStripMenuItem_Click Veranstaltung erstellen. Ich werde später bestimmen, wie ich meine Favoritenliste speichern kann.Hinzufügen von Elementen zu ToolStrip bei RunTime

Also für wir gehen:

datagridview Reihe rechts klicken für „John Smith“

von ContextMenu „Zu Favoriten hinzufügen“ auswählen

Die Favoriten ToolStripMenu ein neues Element hinzugefügt hat das liest "John Smith"

Klicken Sie auf "John Smith" ToopStripMenuItem löst eine Aktion (z. B. die Zeile in der daragridview Zeile auswählen usw.)

Irgendwelche guten Anfangsideen?

Antwort

12

Wenn ich Sie recht verstehe, ich denke, dass dies genau das ist, was Sie wollen:

private void buttonAddFav_Click(object sender, EventArgs e) 
    { 
     ToolStripItem item = new ToolStripMenuItem(); 
     //Name that will apear on the menu 
     item.Text = "Jhon Smith"; 
     //Put in the Name property whatever neccessery to retrive your data on click event 
     item.Name = "GridViewRowID or DataKeyID"; 
     //On-Click event 
     item.Click += new EventHandler(item_Click); 
     //Add the submenu to the parent menu 
     favToolStripMenuItem.DropDownItems.Add(item); 
    } 

    void item_Click(object sender, EventArgs e) 
    { 
     throw new NotImplementedException(); 
    } 
4

Das ist ziemlich einfach. Sie müssen nur eine Rückrufmethode einrichten, die für alle Favoriten ToolStripMenuItem verwendet wird. In dieser Methode vergleichen Sie die Attribute item.Text oder und führen die verschiedenen bevorzugten Methoden aus.

private void FavoriteToolStriptem_Click(object sender, EventArgs e) { 
    ToolStripMenuItem item = sender as ToolStripMenuItem; 
    MessageBox.Show("You clicked on the menu item called " + item.Name + " shown as " + item.Text); 
} 
+0

das war auch richtig, danke! – ikathegreat