c# TextBoxen in Schleife durchlaufen lassen

Gast #1767391
Lesenswert?

hallo,
ich programmiere mit VS2008 C#.
nun habe ich sehr viele Textboxen welche mir Werte Anzeigen.
Damit ich nun nicht jede TextBox im syntax extra aufrufen muss, suche 
ich nach einer Möglichkeit den Text in den Boxen in einer Schleife zu 
aktualisieren, geht sowas?

Momentan habe ich es so:
1
TextBox1.Text == Wert[n++]
2
TextBox2.Text == Wert[n++]
3
TextBox3.Text == Wert[n++]
4
TextBox4.Text == Wert[n++]
5
TextBox5.Text == Wert[n++]

Machen würde ich es gerne "irgendwie" so:
1
for (n=0; n<30; n++){
2
   TextBox(*).Text == Wert[n];
3
}
wobei das (*) ja dann irgendwie durch einen Zähler ersetzt werden muss, 
nun weiß ich eben nicht ob und wie das Möglich ist!?

geht das?
Gast #1767440
Lesenswert?

Hallo,

Vorweg ich finde die lösung mit dem Array auch schöner.

Aber das hier könnte im übertragenen Sinne bei dir auch funktionieren.
1
for (int i = 1; i < 5; i++)
2
{
3
   Control[] found = this.Controls.Find("textBox"+i.ToString(), true);
4

5
   ((TextBox)found[0]).Text = i.ToString();
6
}

Gruß Klaus
#1770095
Lesenswert?

So könnte es gehen:

Ganz oben in deiner Klasse:
1
List<TextBox> tbList = new List<TextBox>();

Bei Form_Loading (oder so)
1
tbList.Add(textBox1);
2
tbList.Add(textBox2);
3
tbList.Add(textBox3);
4
tbList.Add(textBox4);
5
tbList.Add(textBox5);

Und in deiner Funktion dann:
1
foreach (TextBox tb in tbList)
2
{
3
    tb.Text = Wert[n++];
4
}
Gast #1770430
Lesenswert?

die möglichkeit textbox[0].text = "" scheint es in c# wohl nicht zu 
geben, in vb6.0 ging das. schade das ms das nicht übernommen hat.
das ganze mit einem list-element zu lösen, ist im moment auch meine 
einzigste funktionierende methode. gerade bei datenbankabfragen, die 
nicht fest an eine textbox gebunden sind, ist das mit dem index eine 
schöne sache.
#1781656
Lesenswert?

>foreach (TextBox tb in tbList)
>{
>    tb.Text = Wert[n++];
>}

geht im Übrigen auch ohne zuweisung in eine Liste, aber noch ein bischen 
unschöner.
Wenn der Code vom Designer kommt, willst du bestimmt nicht alles nochmal 
in eine Liste packen. die sind auch schon in einer drin. Zumendest dann, 
wenn sie nicht in einer Groupbox o.ä. sind.
1
foreach (control c in this.Controls)// ich weiß nicht aus dem Kopf ob man direckt textbox verwenden kann
2
{
3
   if(c is TextBox) // hier wird auch gleich gecastet
4
   {
5
       c.Text=Wert[n++];
6
   }
7
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren