www.mikrocontroller.net

Forum: PC-Programmierung c# TextBoxen in Schleife durchlaufen lassen


Autor: n00b (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
TextBox1.Text == Wert[n++]
TextBox2.Text == Wert[n++]
TextBox3.Text == Wert[n++]
TextBox4.Text == Wert[n++]
TextBox5.Text == Wert[n++]

Machen würde ich es gerne "irgendwie" so:
for (n=0; n<30; n++){
   TextBox(*).Text == Wert[n];
}
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?

Autor: csharpler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstelle ein Textbox-Array und laufe dann das Array mit der foreach 
Schleife.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
for (int i = 1; i < 5; i++)
{
   Control[] found = this.Controls.Find("textBox"+i.ToString(), true);

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

Gruß Klaus

Autor: n00b (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wußte nicht dass es Textboxen auch als arrays gibt!

hat problemlos geklappt!
Danke!

Autor: csharpler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst aus allen Objekten Arrays erstellen.

Autor: fz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

n00b schrieb:
> Momentan habe ich es so:TextBox1.Text == Wert[n++]
> TextBox2.Text == Wert[n++]
> TextBox3.Text == Wert[n++]
> TextBox4.Text == Wert[n++]
> TextBox5.Text == Wert[n++]

== ist keine Zuweisung, sondern ein Vergleichsoperator

grüße

fz

Autor: n00b (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja sorry, ist nur ein fehler als ich das beispiel oben getippt habe, 
natürlich meinte ich eine Zuweisung mit nur einem '='.

Autor: Sven H. (dsb_sven)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So könnte es gehen:

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

Bei Form_Loading (oder so)
tbList.Add(textBox1);
tbList.Add(textBox2);
tbList.Add(textBox3);
tbList.Add(textBox4);
tbList.Add(textBox5);

Und in deiner Funktion dann:
foreach (TextBox tb in tbList)
{
    tb.Text = Wert[n++];
}

Autor: jones (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven H. (dsb_sven)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
najaaa

Du kannst auch nen array anlegen und das mit den Textboxen befüllen. Die 
Liste hat den großen Vorteil, dass sie sich beim Zugriff auf die Member 
verhält wie ein Array aber die Größe dynamisch verwaltet wird ;-)

Autor: Daniel G. (daniel83)
Datum:

Bewertung
0 lesenswert
nicht 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.
foreach (control c in this.Controls)// ich weiß nicht aus dem Kopf ob man direckt textbox verwenden kann
{
   if(c is TextBox) // hier wird auch gleich gecastet
   {
       c.Text=Wert[n++];
   }
}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.