Ich habe ein dynamisches Label auf Knopfdruck auf Windows Form erstellt. Und dann auf einen Rechtsklick auf das Etikett. Ich zeige ein Kontextmenü "cm". Offensichtlich möchte ich den Kontextmenüs Funktionalität hinzufügen. Aber was ich nicht verstehe, ist, wie referenziere ich das "lbl" -Objekt innerhalb des Event-Handlers? Wie kann ich die Eigenschaften der Beschriftungen innerhalb der Ereignishandler namens MarkedImportant und EditLabel bearbeiten?Wie erstellt man den Event-Handler für die Bearbeitung dynamischer Labels in C#?
public void btnMonSub_Click(object sender, EventArgs e)
{
string s = txtMonSub.Text;
Label lbl = new Label();
lbl.Text = s;
lbl.Location = new System.Drawing.Point(205 + (100 * CMonSub), 111);
CMonSub++;
lbl.Size = new System.Drawing.Size(100, 25);
lbl.BackColor = System.Drawing.Color.AliceBlue;
this.Controls.Add(lbl);
ContextMenu cm = new ContextMenu();
cm.MenuItems.Add("Mark Important", MarkImportant);
cm.MenuItems.Add("Edit", EditLabel);
lbl.ContextMenu = cm;
}
private void MarkImportant(object sender, EventArgs e)
{
// imp..
}
private void EditLabel(object sender, EventArgs e)
{
// edit..
}
Oder gibt es einen besseren Weg, dies zu tun? Wie dynamisch den Event-Handler selbst hinzufügen?
Vielen Dank im Voraus.
Was dieses Ereignis verbunden ist? Es scheint ein Ereignis auf einer Schaltfläche zu sein, aber Sie möchten auf eine mit dieser Schaltfläche verknüpfte Bezeichnung zugreifen. Sie können auf das Label entweder durch seine Instanz zugreifen, oder wenn Sie es dynamischer benötigen, müssen Sie das Label mit dem Button verknüpfen. Das könnte auf verschiedene Arten geschehen. Der beste Weg wäre vollständig darauf angewiesen, wie Ihre Anwendung gestaltet ist und welche Anforderungen Sie haben. – gmiley
Sie können es über 'Objekt Absender' abrufen. Schauen Sie sich [diese ausführliche Antwort] (http://stackoverflow.com/a/4886417/594832) an, die es sehr gut beschreibt. – khlr
@khlr nicht möglich. Der Event-Handler ist an ein ContextMenu angehängt, der Sender ist das ContextMenu. – Steve