Entwickler-Ecke
WinForms - meinprojekt.TabPages.Add(tabPage1) anders darstellen...
tomycat - Mi 26.07.17 15:42
Titel: meinprojekt.TabPages.Add(tabPage1) anders darstellen...
hallo,
je nach einstellung, was ich anklicke, sollen nur bestimmte Tabpages geladen werden.
C#-Quelltext
1: 2: 3: 4:
| meinprojekt.TabPages.Add(tabPage1); string string_aus_meine_base = "tabPage1"; meinprojekt.TabPages.Add(string_aus_meine_base); |
Delete - Mi 26.07.17 16:18
- Nachträglich durch die Entwickler-Ecke gelöscht -
tomycat - Mi 26.07.17 18:12
kannst du bitte etwas genauer werden.
Delete - Mi 26.07.17 18:53
- Nachträglich durch die Entwickler-Ecke gelöscht -
tomycat - Mi 26.07.17 19:27
ich glaube wir reden aneinander vorbei oder ich habe es falsch erklärt.
tabPage 1 bis 5 sind voll mit Buttons / Textboxen usw...
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| mypro.TabPages.Remove(tabPage1); mypro.TabPages.Remove(tabPage2); mypro.TabPages.Remove(tabPage3); mypro.TabPages.Remove(tabPage4); mypro.TabPages.Remove(tabPage5);
string a = "tabPage1"; string b = "tabPage2";
mypro.TabPages.Add(tabPage1); mypro.TabPages.Add(tabPage2); mypro.TabPages.Add(a); mypro.TabPages.Add(b); |
Ralf Jansen - Mi 26.07.17 19:35
Zitat: |
mypro.TabPages.Add(a); // so habe ich nur ein neuer Tab mit weißem Inhalt, der Tab heist tabPage1 |
Das ist genau das Verhalten das in einfachen Worten in der Doku so beschrieben ist.
Zitat: |
"Erstellt eine Registerkarte mit dem angegebenen Text und fügt es der Auflistung hinzu.
text
Der auf der Registerkarte anzuzeigende Text.."
|
Warum erwartest du was anderes?
Es gibt keinen magischen Zusammenhang zwischen dem string "tabPage1" und der Instanz einer TabPage die zufällig auch an einer Variablen hängt die tabPage1 heißt.
Wenn du TabPages ein/ausblenden willst benutze die Instanzen der jeweiligen Pages. Irgendwelche strings helfen nicht.
Anstatt Add wäre aber vermutlich Insert sinnvoller um positionsgerecht aus und einblenden zu können, sonst ändert sich unter Umständen die Reihenfolge der Tabs.
Delete - Mi 26.07.17 21:05
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ralf Jansen - Mi 26.07.17 21:45
Zitat: |
Visible, auf die man von außen nicht zugreifen kann. Warum? |
Weil es diese Eigenschaft von Control erbt aber dann doch nicht bei jedem Control sinvoll nutzbar ist. Darum werden solche Properties üblicherweise zumindest versteckt da man sie nicht entfernen kann (das wäre gegen jedes OO Grundprinzip). Da gibt es aber auch eine Menge anderer Properties von Control die nicht bei jeder Ableitung noch Sinn machen. Z.B. Text, Anchor, Dock etc. Auf Windows API Ebene ist es ja genauso. Nicht jede Windows Nachricht die du da an ein Control senden kannst hat auch irgendeine Auswirkung wie du festgestellt hast.
Und warum ist das so? Historie ... Das Tab Control brauchte vermutlich als es erfunden wurde (so Mitte der 90er mit dem Rest der Common Controls) kein ausblenden/einblenden der Tabs oder es wurde am Anfang nicht für relevant genug gehalten. Das nachträglich zu ändern hätte vermutlich einige Breaking Changes zur Folge, ich denke da zum Beispiel an die Indexierung der Tabs. Das Feature ist daher wohl nie als so relevant angesehen worden um ne Menge Code der funktioniert kaput zu machen nur weil es so etwas schöner ginge.
tomycat - Do 27.07.17 19:54
meine Lösung:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| private void reiter_laden(string a, string rname) { switch (a) { case "tabPage1": xx.TabPages.Add(tabPage1); if (rname != "") tabPage1.Text = rname; break; case "tabPage2": xx.TabPages.Add(tabPage2); if (rname != "") tabPage2.Text = rname; break; case "tabPage3": xx.TabPages.Add(tabPage3); if (rname != "") tabPage3.Text = rname; break; case "tabPage4": xx.TabPages.Add(tabPage4); if (rname != "") tabPage4.Text = rname; break; } |
Delete - Do 27.07.17 20:44
- Nachträglich durch die Entwickler-Ecke gelöscht -
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 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!