Entwickler-Ecke
C# - Die Sprache - Index von Buttons in mehrdimensionalem Array heraus finden
diggn_gernot - Mo 12.12.11 04:17
Titel: Index von Buttons in mehrdimensionalem Array heraus finden
Guten Morgen.
Ich habe ein mehrdimensionales Array von Buttons erstellt und möchte die Eigenschaften einzelner Buttons per _Click Event auf den jeweiligen Button verändern. Die Buttons sind da, auch den EventHandler für das click event habe ich, aber ich bekomme es nicht hin, dass sich der geklickte Button verändert.
Hier der code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| public void btn_erstellen_Click(object sender, EventArgs e) { int Spalten = Convert.ToInt32(numUpDown_Katzahl.Value); int Zeilen = Convert.ToInt32(numUpDown_qpc.Value); int x = 13;
for (int n = 0; n < Spalten; n++) { for (int i = 0; i < Zeilen; i++) { Button btn_neu = new Button(); btn_neu.Location = new System.Drawing.Point(x, y); btn_neu.Text = "Frage " + (i + 1) + " ??"; btn_neu.Name = "Frage" + n + i; btn_neu.TabIndex = 0; btn_neu.Width = btn_neu_kat[1, 1].Width; this.Controls.Add(btn_neu); btn_Frage[i,n] = btn_neu; this.btn_Frage[i,n].Click += new System.EventHandler(this.btn_Frage_Click); y = y + 40; } y = 180; x = x + 120; } } |
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| private void btn_Frage_Click(object sender, EventArgs e) { btn_Frage[1,2].BackColor = Color.Red; Button btn = sender as Button; btn_Frage[1, 2].Text = "lol"; FrageAntwort fa = new FrageAntwort(); fa.ShowDialog(this); } |
in Designer.cs
C#-Quelltext
1:
| System.Windows.Forms.Button[,] btn_Frage = new System.Windows.Forms.Button[30,30]; |
Damit lassen sich die Eigenschaften (hier nur Beispiele) für den konkreten Button btn_Frage[1,2] ändern. Es soll aber den Button treffen, der geklickt wurde, btn_Frage[i,n], nur wie geht das? Ich denke ich muss ermitteln, welche Werte i und n gerade haben. Ich habe schon was gefunden, dass man das mit dem "sender as Button" machen kann, aber so recht will das nicht funktionieren. Hat jmd. eine Idee?
Besten Dank und gute Nacht. :)
jaenicke - Mo 12.12.11 08:52
Hallo und :welcome:
diggn_gernot hat folgendes geschrieben : |
Ich habe schon was gefunden, dass man das mit dem "sender as Button" machen kann, aber so recht will das nicht funktionieren. |
Naja, du ermittelst auf die Weise ja auch nur den Button, machst damit aber nichts. Das Array brauchst du gar nicht. Du hast den Button doch da schon in btn. Das heißt du kannst direkt mit btn arbeiten.
diggn_gernot - Mo 12.12.11 12:48
AAAHHHHHHHHHH
Vielen Dank!!!!
Ich bin davon ausgegegangen, das btn (Button btn = sender as Button;) nur innerhalb des click Events existiert und Veränderungen nicht an seinen sender zurück gibt, von daher habe ich das gar nicht erst versucht. OMG. Und damit habe ich mir die ganze Nacht um die Ohren geschlagen -.- :D ^^
Th69 - Mo 12.12.11 13:21
Hallo,
das Stichwort "Referenztyp" sollte dir dann für weitere Recherchen behilflich sein (denn dies sowie den Unterschied zum "Wertetyp" sollte man bei der C# Programmierung unbedingt wissen).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!