Danke für die schnelle Antwort!
das mit dem array im array kommt daher, dass f eine von mir verwendete Klasse ist (abgeänderte Label Klasse), in der wiederum ein array von Labes besteht.
Tut mir Leid, meine Fragestellung war nicht präziese, wie mir inzwischen aufgefallen ist.
Damit meine ich, dass ich den Teil, in dem ich die void implementiert habe nicht aufgeführt habe.
In diesem Ausschnitt habe ich versucht, eine allgemeine Funktion zu schaffen, die für alle Labels gilt, aber durch die for-Schleife wird diese nur für die letzten Werte übernommen, da die vorherigen überschrieben werden ( blöder Fehler meinerseits).
Ist es möglich, trotzdem eine allgemeingültige void für die Lasbels_Click zu schreiben, ohne für jedes eine einzelne funktion zu beanspruchen?
Hier der Ausschnitt:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| for (int a = 1; a <= 4; a++) { for (int b = 1; b <= 6; b++) { f[a] = new farben(); f[a].f[b].BringToFront(); f[a].nr = a; this.Controls.Add(f[a].f[b]); this.f[a].f[b].Click += new System.EventHandler(this.f_Click);
if (b <= 3) f[a].f[b].Location = new System.Drawing.Point(-10 + 29 *a, 370+13*b); else f[a].f[b].Location = new System.Drawing.Point(3 + 29 * a, 331 + 13 * b); } } |
und die Klasse farben:
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:
| class farben : Control { public Label[] f = new Label[7]; public int nr;
public farben() { nr = new int();
for (int i = 1; i <= 6; i++) { f[i] = new Label(); f[i].BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; f[i].Size = new System.Drawing.Size(10, 10); } f[1].BackColor = System.Drawing.Color.Red; f[2].BackColor = System.Drawing.Color.RoyalBlue; f[3].BackColor = System.Drawing.Color.Green; f[4].BackColor = System.Drawing.Color.Yellow; f[5].BackColor = System.Drawing.Color.Violet; f[6].BackColor = System.Drawing.Color.Brown;
} } |