Entwickler-Ecke
WinForms - tabPages & UserControls zur Laufzeit erzeugen und zugreifen
Florian Wolf - Do 29.04.10 07:58
Titel: tabPages & UserControls zur Laufzeit erzeugen und zugreifen
Hallo,
ich habe ein Problem. Ich muss zur Laufzeit eine oder mehrere TabPages erzeugen. Auf diesen TabPages muss ich einen UserControl platzieren auf dem sich einige TextBoxen befinden. Auf meinem MainForm (auf dem ich die TabPages hinzufüge) habe ich einen Button, wenn ich diesen anklicke muss ich nacheinander die Inhalte der TextBoxen aller erzeugten TabPages auslesen.
Die TabPages habe ich wie folgt erzeugt, wenn ich in einer ListView einen Doppelklick mache:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| int iIndex; string strAuswahl;
try { iIndex = listView1.SelectedIndices[0]; strAuswahl = listView1.Items[iIndex].Text.ToString(); TabPage objTabPage = new TabPage(strAuswahl); tabControl1.TabPages.Add(objTabPage); csUnterstueckliste modulUnterstueckliste = new csUnterstueckliste(); objTabPage.Controls.Add(modulUnterstueckliste); } catch {
} |
Jetzt habe ich meine Tabs mit den UserControls. Nur habe ich leider keine Ahnung wie ich an den Inhalt der TextBoxen auf den UserControls kommen soll.
Ich hoffe mein Problem ist verständlich und es kann mir jemand helfen.
danielf - Do 29.04.10 09:42
Hallo,
auf den Inhalt von den TextBoxen der UC kannst du nur zugreifen, wenn du diese sichtbar machst. D.h. mit Hilfe einer Methode/Property oder dem Modifier zu verändern. Das ist aber sehr ungeschickt, falls du später mal keine TextBox sondern ein anderes Control verwenden willst. Du willst ja eigentlich auch nicht auf die TextBox, sondern auf den Text/die Daten die sich darin befinden. Deshalb mach eine Methode die dir die gewünschten Daten in der gewünschten Form zur Verfügung stellt.
Später musst du dann über alle TabPagen gehen und dir das csUnterstueckliste (Bitte schau dir mal die .NET Namenskonvention an) UC holen (TabContainer.Pages[i].Controls[0]) und diese zu deiner csUnterstueckliste Casten um dann auf das Property/die Methode zuzugreifen.
Gruß
Florian Wolf - Do 29.04.10 10:18
Vielen Dank damit hat es funktioniert.
C#-Quelltext
1: 2: 3:
| int iIndex; iIndex = tabControl1.SelectedIndex; csUnterstueckliste test = (csUnterstueckliste)tabControl1.TabPages[iIndex].Controls[0]; |
So komme ich an alle Elemente meiner UserControl.
Ich werde mir die Namenskonventionen noch mal anschauen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!