Entwickler-Ecke
WinForms - Flexible Programmierung
3marci - Fr 29.04.11 12:48
Titel: Flexible Programmierung
Hi Leute,
ich habe lasse während der Laufzeit das Programm mehrere Controls erstellen.
Diese Controls werden alle unterschiedlich benannt, z.B.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| string title = (tabControl1.TabCount + 1).ToString() + ". Instanz"; TabPage newPage = new TabPage(title);
TextBox t1 = new TextBox(); t1.Name = "textBoxUrl" + (tabControl1.TabPages.Count);
newPage.Controls.Add(t1); tabControl1.Controls.Add(newPage); |
Der Benutzer kann so viele neue TabPages erstellen wie er will.
Meine Frage ist nun, wie kann ich auf, sagen wir, textBoxUrl2.Text zugreifen wenn es die TextBox noch gar nicht gibt?
Übrigens habe ich schon eine for-Schleife:
C#-Quelltext
1: 2: 3:
| for (int i = 0; i < (tabControl1.TabCount - 1); i++ ) { } |
Dr. Hallo - Fr 29.04.11 13:18
wo liegt der sinn auf eine textbox zuzugreifen, die es nicht gibt? :lupe:
bakachan - Fr 29.04.11 13:25
Grundsätzlich gilt:
Auf ein Control das es nicht gibt kann man auch nicht zugreifen.
Wenn es beliebig viele Tabs und TextBoxes geben kann woher willst du dann auch wissen das du genau auf textbox 2 zugreifen willst?
Du könntest dir das richtige Control zum Beispiel aus der "Controls"-Collection der TabPage besorgen oder dir beim erstellen schon merken welche Controls es gibt (z.B. per Dictionary) oder wozu sie gehören.
3marci - Fr 29.04.11 14:02
Dr. Hallo hat folgendes geschrieben : |
| wo liegt der sinn auf eine textbox zuzugreifen, die es nicht gibt? :lupe: |
Ich will nicht auf eine TextBox zugreifen die es nicht gibt, ich will auf die TextBoxen zugreifen die es gibt.
Ich weiß genau wie viele TextBoxen es gibt und wie sie heißen, siehe
int i bei meiner for-Schleife.
Das Problem ist dass ich zur Laufzeit des Programms auf die Textboxen zugreifen muss, da diese erst zur Laufzeit erstellt werden.
@ bakachan (oder Baka-chan xD)
Thx, werds mal versuchen...
Wer noch ne Idee hat bitte posten.
Dr. Hallo - Fr 29.04.11 22:38
du kannst dir auch ne klasse von tabPage ableiten und eine TextBox reinstecken etwa so...
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| class CTabPage : TabPage { private TextBox _tb = null; public CTabPage(string name) { _tb = new TextBox(); _tb.Location = new System.Drawing.Point(10, 10); _tb.Name = name; this.Controls.Add(_tb); }
public TextBox GetTextBox() { return _tb; } } |
Anwendung dan etwa so...
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| CTabPage tp = new CTabPage("textBoxName"); tabControl1.Controls.Add(tp);
... for (int i = 0; i < (tabControl1.TabCount); i++) { ((CTabPage)tabControl1.TabPages[i]).GetTextBox().Text = "Huhu"; } |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!