Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Sonstige Fragen (http://www.informatikerboard.de/board/board.php?boardid=25)
--- C# Ereignisse und Ereignishandler (http://www.informatikerboard.de/board/thread.php?threadid=1526)


Geschrieben von InformaTiger am 11.06.2013 um 16:39:

  C# Ereignisse und Ereignishandler

Hallo,
ich wollte fragen ob es in C# oder allgemein in der Informatik möglich ist einen Click Event Handler für mehrere Benutzersteuerelemente zu benutzen?

Das brauche ich deshalb weil in meinem Programm PictureBoxen dynamisch erzeugt werden sollen, aber den selben Klick Handler mit unterschiedlichen Aktionen dabei verwenden.

Bitte informiert mich bei unklarer Aufgabenstellung.

Wink

Lg
InformaTiger



Geschrieben von Karlito am 11.06.2013 um 19:19:

  RE: C# Ereignisse und Ereignishandler

Hallo,

ja das geht. Siehe Observer Pattern.

In C# gibt es ereignisse die abgefangen werden können. Wenn man einen Button hat, dann sind das bei der Vervollständigung die Einträge mit den Blitzen. So müsstest du nur einen Handler zu dem betrioffenen Ereignis hinzufügen.

Konkret für den Button guckst Du hier. (Ein Button ist ein Control, also erbt von Control)

VG,

Karlito



Geschrieben von Karlito am 11.06.2013 um 19:28:

 

Sorry, nicht ganz vollständig...

Guckst Du außerdem hier

Codebeispiel für den Button:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
public void ButtonCreator(){
 Button btn = new Button();
 btn.Click += new EventHandler(ClickHandler); //Hier kkönnen mit += beliebig viele hinzugefügt werden
 //DoStuff with Button...
}

void ClickHandler(object sender, EventArgs args){
 //DoStuff
}


VG,

Karlito



Geschrieben von InformaTiger am 12.06.2013 um 15:36:

 

Wie kann ich aber dann unterscheiden welcher Button das Event aufruft?

verwirrt

Lg
InformaTiger



Geschrieben von eulerscheZahl am 12.06.2013 um 15:49:

 

void ClickHandler(object sender, EventArgs args)
sender hat die Funktion aufgerufen.

Edit: etwas konkreter
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
private void Form1_Load(object sender, EventArgs e)
{
    button1.Click += new EventHandler(ClickHandler);
    button2.Click += new EventHandler(ClickHandler);
    button3.Click += new EventHandler(ClickHandler);
    button4.Click += new EventHandler(ClickHandler);
}

public void ClickHandler(object sender, EventArgs e)
{
    MessageBox.Show("geklickt: " + ((Button)sender).Name);
}


Forensoftware: Burning Board, entwickelt von WoltLab GmbH