Bei Windows Forms eigene Methode bei bestimmten Ereignissen aufrufen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.

VielFrager42 
Fragesteller
 11.07.2021, 13:19

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...

0

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)

VielFrager42 
Fragesteller
 11.07.2021, 11:27

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?

0
DerEinsiedler  11.07.2021, 12:11
@VielFrager42

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.

1
VielFrager42 
Fragesteller
 11.07.2021, 12:48
@DerEinsiedler

Ach so, mir war bisher nicht klar dass man da einfach den Namen der Funktion reinschreiben kann, die aufgerufen werden soll... Vielen dank!

0
VielFrager42 
Fragesteller
 11.07.2021, 15:22
@DerEinsiedler

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...

0
VielFrager42 
Fragesteller
 12.07.2021, 16:36
@DerEinsiedler

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...

0