Hallo,
meine Anregung ist unvollständig, weil ein bestimmtes Control nicht unmittelbar nach dem Namen gefunden werden kann, sondern u.U. eine rekursive Suchfunktion nötig ist. Unter der Voraussetzung, dass alle Labels auf demselben ContainerControl (z.B. Panel) liegen, geht das wie folgt:
Dein Hauptfehler ist, dass Du Labelname + Eigenschaft als string verarbeiten willst. Dein Ziel muss sein, ein bestimmtes Control anhand seines Namens zu finden:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| private void ChangeColor(int i, int j) { string lblname = String.Format("lblTip{0}_{1}", i+1, j+1); foreach(Control ctrl in MyPanel.Controls) { if (ctrl is Label && ctrl.Name == lblname) { (ctrl as Label).BackColor = System.Drawing.Color.GreenYellow; break; } } |
Weitere Fehler: this ist eine Kurzbezeichnung für die aktuelle Klasse; es gehört nicht zum Namen des Elements. Gleiches gilt für die Eigenschaft BackColor. Außerdem ist für die Zusammensetzung eines solchen Strings die String.Format()-Methode besser.
Wenn die Labels auf verschiedenen Containern liegen, musst Du sie rekursiv durchlaufen.
Grundsätzlich musst Du Dir merken, zwischen den Typen und Eigenschaften genau zu unterscheiden. Jürgen
PS. Bitte markiere Quellcode: oben auf "Bereiche" klicken, den Code markieren, dann auf das Plus neben C# klicken. Das kannst Du auch jetzt nachholen, indem Du Deinen Beitrag änderst.