Entwickler-Ecke

C# - Die Sprache - Events für Dynamisch erzeugten Buttons erzeugen.


Oscuro - So 19.05.13 22:32
Titel: Events für Dynamisch erzeugten Buttons erzeugen.
Ein schöner Abend euch alle,

Dies hier ist mein erster Post, habt also bitte Verständnis wenn ich was Falsches mache.
Ich versuche zurzeit Dynamische Buttons zu erzeugen und sie dann mit ein EventHandler zu belegen um den Textinhalt beim klicken von jeden einzelnen Button zu ändern…
Ich bin bis jetzt so vorgegangen:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
for (int zeile = 0; zeile < 10; zeile++)
{
    for (int spalte = 0; spalte < 10; spalte++)
    {
        btnArray[zeile, spalte] = new Button();
        btnArray[zeile, spalte].Location = new Point(60 * zeile + 1060 * spalte + 10);
        this.pnlBoard.Controls.Add(btnArray[zeile, spalte]);

        btnArray[zeile, spalte].Click += new EventHandler(this.button_Click);
    }
}

Die Buttons werden jetzt schön Dynamisch erzeugt, wie kann ich jetzt aber ein event für jeden einzelnen Button machen ohne gleich 30 Seiten Code zu schreiben?

Danke fürs lesen, ich hoffe ihr könnt mir weiterhelfen.

Mfg, Oscuro.

Moderiert von user profile iconTh69: Quote- durch C#-Tags ersetzt


Ralf Jansen - So 19.05.13 23:15

Du hast doch jetzt einen Event für jeden deiner Buttons? Wenn du die Buttons in deinem EventHandler unterscheiden willst sieh dir den an den EventHandler übergebenen Sender an. Das ist der jeweils auslösende Button.


DarkStaRX - So 19.05.13 23:55


C#-Quelltext
1:
2:
Button btn = (Button)sender;
btn.Text = "blabla";

So könntest du aus dem Event den ausgelösten Button ansprechen... und schreibst in den ausgelösten Button den Text blabla

Moderiert von user profile iconTh69: C#-Tags hinzugefügt


Oscuro - Mo 20.05.13 12:09

Ah vielen Dank,

Genau nach so was habe ich gesucht… jetzt sieht das ganze deutlich kürzer aus. :D

Wünsche noch ein schöner Tag miteinander.


kl.feigling - Di 03.09.13 14:55

Hallo, ich habe auch nochmal eine Frage zu denn Events.
Wenn ich einen Button in C# deaktivieren möchte geht das ja mit: button.Visible = false;
Dies kann ich ja auch direkt nach dem drücken machen :-)

Aber wie kann ich in wieder mit einer anderen Methode, die mein Programm aufruft aktivieren ?


C#-Quelltext
1:
2:
3:
4:
5:
6:
 private void button_Click(object sender, EventArgs e)
        {
            
            button.Enabled = false;
            Funktionen.Funktionen.Adjustment_start();
        }

nach dem mehrere Prozesse gelaufen sind soll diese Methode aufgerufen werden:


C#-Quelltext
1:
2:
3:
4:
private static void Button_freigeben ()
        {            
            button.Enabled = true;         
        }


Habe auch schon versucht ein eigenes Event zuschreiben ... leider ohne erfolg :-(


Ralf Jansen - Di 03.09.13 15:24

Zitat:
Wenn ich einen Button in C# deaktivieren möchte geht das ja mit: button.Visible = false;


Du meinst vermutlich Enabled wie im Code.

Zitat:
nach dem mehrere Prozesse gelaufen sind soll diese Methode aufgerufen werden:


Definiere den Zeitpunkt/Codestelle wo das "mehrere Prozesse gelausen sind" fertig ist und rufe dort deine Methode auf.


Th69 - Di 03.09.13 16:29

Aber die Methode darf dann natürlich nicht static sein, da 'button' ja eine (non-static) Membervariable der Klasse ist.