Entwickler-Ecke

WinForms - Labelnamen aus Strings bzw. Variablen zusammensetzen


Tom01 - Fr 22.07.11 18:30
Titel: Labelnamen aus Strings bzw. Variablen zusammensetzen
Hallo,

ist es irgendwie möglich, viele Labels in einer Schleife zu bearbeiten?

Beispielsweise heißen die Labels lb1,lb2,lb3,...
Und da würd ich zum Beispiel gerne folgende Codezeilen in einer Schleife durchführen:


C#-Quelltext
1:
2:
3:
lb1.Text = "a";
lb2.Text = "blabla";
lb3.Text = "bla";


Auf die einfachste und logische Art (wie folgt) ist das ja nicht möglich:


C#-Quelltext
1:
2:
3:
4:
for(int i = 0; i < 4; i++)
{
    lb+i.Text = "was auch immer";
}



Vielen Dank im Vorraus!

LG
Tom


jaenicke - Fr 22.07.11 18:44

Es gibt Find, damit solltest du alle Controls finden, die nach einer bestimmten Weise benannt sind:
http://msdn.microsoft.com/de-de/library/system.windows.forms.control.controlcollection.find.aspx

Besser wäre allerdings, wenn du es anders löst, z.B. indem du die Steuerelemente vorher in eine Liste packst oder so. Denn wenn du sie über den Namen ansprichst, besteht z.B. immer die Gefahr, dass du bei einer Namensänderung vergisst diese im Code mit anzupassen...


Tom01 - Fr 22.07.11 18:51

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Es gibt Find, damit solltest du alle Controls finden, die nach einer bestimmten Weise benannt sind:
http://msdn.microsoft.com/de-de/library/system.windows.forms.control.controlcollection.find.aspx

Besser wäre allerdings, wenn du es anders löst, z.B. indem du die Steuerelemente vorher in eine Liste packst oder so. Denn wenn du sie über den Namen ansprichst, besteht z.B. immer die Gefahr, dass du bei einer Namensänderung vergisst diese im Code mit anzupassen...


Dank dir, das Problem ist nur, jedem Label wird etwas anderes zugewiesen...

LG
Tom


jaenicke - Fr 22.07.11 19:01

Dann bietet sich ein Dictionary an:
http://msdn.microsoft.com/de-de/library/xfhwa508.aspx

Dann kannst du beim Start Konstanten mit dem jeweils zugeordneten Button dort hineinpacken. Ansprechen kannst du die Labels dann auch wieder über die Konstanten. auf diese Weise kann der Compiler die Richtigkeit besser prüfen. Denn so kannst du zwar Konstanten vertauschen, aber keine Tippfehler machen. Denn die kann der Compiler in Strings (den Komponentennamen) ja nicht überprüfen.

Und die ganz saubere Lösung ist natürlich die Trennung der Daten von der Oberfläche, dann stellt sich das Problem gar nicht...