C# Windows Forms erkennen welcher Button gedrückt worden ist?

3 Antworten

Hallo,

wie triopasi schon sagt, würde ich nicht 100 Buttons mit XAML aufsetzen, sondern normal coden:

In einer Schleife

Button[100] buttons;

// Code für den Grid

for(int i=0;i<100;i++){

   buttons[i]=new Button();

   buttons.[i].click+=new Eventhandler(Deine_Aktion); // hier kannst Du mit

   // mit if die jeweiligen Aktionen verschiedenen Eventhandler zuordnen

  // würde ich jetzt aber nicht, wenn man im Event die Koordinate abfragt

   // Button innerhalb der Schleife in Grid einfügen, auch über Index buttons[i].

}

Ich bin jetzt nicht wirklich der C#-Freak, deswegen hier nur ganz grob.

Woher ich das weiß:eigene Erfahrung – Hobby und teilweise beruflich

triopasi  15.12.2017, 22:41

Wenn du die Buttons als 10x10 Feld anzeigst, solltest du vllt auch n 10x10 Array nutzen. Dann ist button [0,0] oben links in der Ecke und button [9,9] unten rechts.


Als Eventhandler rufst du dann einfach immer "handle (x, y)" auf, wobei x und die "Koordinaten" des Buttons sin. Die Funktion "handle (...)" macht dann alles weitere.

1
Dominicso11 
Fragesteller
 16.12.2017, 14:38

Vielen Dank für die schnelle Antwort. Ich weis leider noch nicht so viel über C#. Darum wäre ich sehr froh, wenn du mir irgendein Beispiel zeigen könntest.

Ich komme bei deinem Beispiel oben nicht ganz so draus...

0

Schon mal was von Events gehört? So handhabt man click-Events.

Kannst ja mit ner Schleife Buttons erstellen und die Events binden.

Woher ich das weiß:Studium / Ausbildung – Informatikstudium

Dominicso11 
Fragesteller
 16.12.2017, 14:37

Vielen Dank für die schnelle Antwort. Ich weis leider noch nicht so viel über C#. Darum wäre ich sehr froh, wenn du mir irgendein Beispiel zeigen könntest. Am besten mir irgendwie 10 Buttons. So dass ich das besser verstehe :)

0

Die Methode, die das Click-Event verarbeitet bekommt einen Parameter "Sender". Das ist die Referenz auf den jeweiligen Button, Du brauchst ihn nur zu casten:

var button = Sender as MeinKoordinatenButton;
if (button)
{
....
}