Bei Windows Forms eigene Methode bei bestimmten Ereignissen aufrufen?
Hallo, ist es möglich dass man in Windows Forms eine eigene Methode bei vordefinierten Ereignissen aufruft? Ich möchte bei mehreren Ereignissen die gleiche Methode aufrufen...
2 Antworten
Entweder du schreibst es selbst im Code oder du lässt es dir vom Forms Designer richten.
Für Letzteres musst du erst die Komponente selektieren, an die ein Event Listener gehängt werden soll. Im Objekt Inspektor gehst du auf den zweiten Tab (Ereignisse / mit einem Blitzsymbol) und lässt dir via Doppelklick auf das Eingabefeld des gewünschten Events eine Event Handler-Methode generieren. Die kannst du dann auch für andere Events auswählen.
Für Ersteres ein kurzes Beispiel:
class Form1 : Form
{
public Form()
{
Button1.Click += DoSomething;
Button2.Click += DoSomething;
}
protected void DoSomething(object sender, EventArgs e)
{
// ...
}
}
Du brauchst eine Methode, deren Signatur in ein EventHandler-Delegate passt. Dann kannst du sie auch an ein Ereignis einer Komponente hängen.
Na klar.
Du kannst in jedem Event-Handler deine Funktion aufrufen, oder denselben Eventhändler bei meheren Ereignissen registrieren lassen (wenn sich die Typen vertragen)
Wie komme ich an den Event-Handler bei Windows Forms? Weil da sind ja immer die vordefinierten Ereignisse aufgelistet, die man anklickt um die entsprechende Funktion zu erhalten. Wie komme ich an den Event-Handler da ran, oder wie muss ich diese vordefinierten Ereignisse in einen eigenen einbauen?
Klick im Designer einfach in das Event und schreib in den Eventhandler dann deinen Funktionsaufruf rein.
Ansonsten musst Du halt im Code die Eventhabdler selber unterbringen.
Ach so, mir war bisher nicht klar dass man da einfach den Namen der Funktion reinschreiben kann, die aufgerufen werden soll... Vielen dank!
Gibt es noch eine Möglichkeit irgendwie an den Namen des Objekts zu kommen, das die Methode aufgerufen hat? Also nicht den Parameter "sender" sondern den Namen mit dem ich das Objekt im Code anspreche...
Weil ich nur eine Funktion habe die von mehreren Events ausgelöst wird, und ich dann die Information brauche welches Objekt das war... Aber ich habe es schon gelöst...
Danke. Gibt es noch eine Möglichkeit irgendwie an den Namen des Objekts zu kommen, das die Methode aufgerufen hat? Also nicht den Parameter "sender" sondern den Namen mit dem ich das Objekt im Code anspreche...