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.

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

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 
Beitragsersteller
 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 :)

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)
{
....
}