Hat jemand ne Idee, wie ich das am besten Gestalten kann?
Hallo!
Der Vorschlag von M.L. funktioniert nur, wenn Du Deine Textboxen in einem entsprechenden Array gespeichert hast, was nach dem Codefragment nicht der Fall ist.
Könnte man zwar zusätzlich noch machen, ist aber überflüssig.
Alle Steuerelemente auf Deinem Dialog werden bereits beim Initialisieren des Dialogs in die Controls -Collection eingetragen und über diese Elemente kann man ganz leicht iterieren:
foreach (Control c in this.Controls)
{
if (c is TextBox)
{
TextBox tb = c as TextBox;
// wenn nicht alle TextBoxen betroffen sein sollen,
// kann man hier noch weitere Kriterien abprüfen
tb.Text = "abc";
}
}
Klar. Schau’ Dir einfach mal an, was VS in der Methode InitializeComponent() so treibt. Letztlich siehst Du dort, wie die Elemente, die Du im Designer auf das Form gepackt hast, im Code erstellt und ihre Eigenschaften gesetzt werden.
Um bspw. eine neue TextBox zu bekommen, kannst Du z.B. schreiben:
TextBox tb = new TextBox();
tb.Text = "Ich bin neu!";
tb.Position = new Point(10,20);
tb.Size = new Size(200,20);
tb.BackColor = Color.Yellow;
this.Controls.Add(tb);
Gruß,
Martin
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
TextBox tb = new TextBox();
tb.Text = „Ich bin neu!“;
tb.Position = new Point(10,20);
tb.Size = new Size(200,20);
tb.BackColor = Color.Yellow;
this.Controls.Add(tb);
Gruß,
Martin
erstmal Danke!
Wie ich ein neues objekt initialisiere hab ich auch schon geschafft. Jetzt ist eben das Problem der dynamisierung noch da… Ich weiß zu Programmstart noch nicht wie viele Textboxen ich eigentlich brauche…
ich müsste jetzt also rein _theoretisch_ folgenden Code durchführen:
FOR i = 0 To x
TextBox (tb & cstr(i)) = new TextBox()
...
this.Controls.Add(tb & i)
NEXT
Neinneinneinnein!
Du wirfst Namen von Referenzen und konkrete Objekte durcheinander!
Wenn Du lustig bist, kannst Du natürlich auch sowas machen (ich hoffe, mein VB ist noch halbwegs übersetzbar ):
for (i as integer = 0 to x)
dim tb as TextBox
set tb=new TextBox()
' weitere Einstellungen der TextBox vornehmen
Me.Controls.Add(tb)
next
Auf diese Weise hantierst Du immer nur mit ein und derselben Referenz auf die jeweils frisch erzeugte TextBox.
Wenn Du dann auf eine bestimmte TextBox zugreifen willst, dann kannst Du das z.B. mit Controls(i) machen. Musst nur noch von Control auf TextBox casten (und beachten, dass in der Controls-Collection evtl. nicht NUR Textboxen enthalten sind, aber das hängt vom konkreten Fall ab).
Gruß,
Martin
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]