Entwickler-Ecke
WinForms - TabControl ohne TabReiter benutzen??
mcsnoop - So 21.03.10 21:04
Titel: TabControl ohne TabReiter benutzen??
Hi@All,
ich möchte gerne ein TabControl Element benutzen und die einzelnen Tabs über ein TreeView "ansteuern".
Leider bekomme ich die Tab-Reiter nicht entfernt.
Wer hat einen Tipp wie ich die wegbekomme?
Grüße
jaenicke - So 21.03.10 21:35
Anders als bei Delphi ist das bei .NET nicht möglich. Hier müssen die Seiten, die nicht angezeigt werden sollen tatsächlich aus TabPages entfernt werden und wieder eingefügt werden, wenn diese wieder angezeigt werden sollen.
Eine Alternative ist die Tabs einfach selbst zu zeichnen (bzw. eben nicht), indem du Ownerdraw aktivierst:
http://msdn.microsoft.com/en-us/library/ms404305.aspx
mcsnoop - So 21.03.10 21:48
Hallo Sebastian,
du scheinst mich etwas missverstanden zu haben.
Ich will keine kompletten TabPages entfernen sondern NUR die Reiter der TabPages.
Damit kann man das TabControl nicht mehr bedienen, aber dies soll ja auch über das TreeMenu erfolgen.
Das TabControl habe ich gewählt, weil ich dort alle GUI Elemente sehr gut plaziert werden konnten.
Wie kann ich diese Reiter entfernen?
Grüße
McSnoop
jaenicke - So 21.03.10 21:59
Ich habe das schon verstanden. ;-)
In Delphi gibt es dafür die Eigenschaft TabVisible bei den einzelnen TabPages. So etwas gibt es bei .NET und damit auch C# aber nicht. Heißt: Solange die Seite in TabPages liegt, wird diese auch als Tab angezeigt. Auch alle Tabs kann man nicht einfach ausblenden. Dafür ist das Control schlicht nicht gedacht.
Nur bei OwnerDraw passiert das nicht, da du dich dann ums Zeichnen selbst kümmerst. Ob es auch eine Möglichkeit gibt die Größe des Tabbereichs zu ändern um diesen ganz verschwinden zu lassen weiß ich nicht. Aber du könntest dort ja eine Überschrift oder sowas platzieren.
Ansonsten bleibt nur einzelne Panels z.B. zu nutzen und diese anzuzeigen und auszublenden.
mcsnoop - So 21.03.10 22:02
hmm schade.
Danke für deine Hilfe. Jetzt muss ich mir das mit dem Ownerdraw mal genauer anschauen.
Grüße
EDIT:
Auch wenn das nicht die saubere Lösung ist es funktioniert:
C#-Quelltext
1:
| this.tabControl1.Region = new Region(new RectangleF(this.tabPage1.Left, this.tabPage1.Top + 21, this.tabPage1.Width + 738, this.tabPage1.Height + 500)); |
Somit schränke ich einfach den sichtbaren Bereich des Controls ein. In den damit leeren Bereich kann ich dann noch so was reinschreiben.
danielf - Mo 22.03.10 07:45
Hallo,
warum verwendest du den überhaupt Tab-Pages, wenn du die Funktionen darin nicht verwendest? Dann kannst du doch auch Panels platzieren, die du dann versteckst/anzeigst oder UserControls entsprechend zuweisen oder ...
Gruß Daniel
mcsnoop - Mo 22.03.10 08:22
Hallo Daniel,
hierbei ging es nicht so sehr um den Sinn, sondern eher darum, das ich erst die GUI gebaut hatte und dann später feststellte das ich die Reiter nicht haben will.
Hatte die Navigation zuerst über die Reiter bis der TreeView dazukam.
Jetzt könnte ich natürlich alles nochmal fein säuberlich aufdriseln und auf Userforms verteilen, aber einfach die Reiter "ausblenden/entfernen" ist der schnellere Weg und als ich die erste
Antwort gelesen habe das dies nicht ginge wollte ich erst recht wissen ob es nicht doch einen Weg gibt. =)
Wenn ich Zeit und Muße finde, dann kann ich das natürlich auch noch sauber auf Userforms verteilen.
Grüße
McSnoop
JüTho - Mo 22.03.10 10:39
Daniel hat nichts von (User-)Forms gesagt, sondern von UserControls gesprochen. Da brauchst du doch nur den Inhalt einer jeden TabPage verschieben in ein eigenes UserControl und bist völlig flexibel, welches im konkreten Fall angezeigt werden soll. Jürgen
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!