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[11].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[12].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:

user profile icondiggn_gernot hat folgendes geschrieben Zum zitierten Posting springen:
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).