Autor Beitrag
mcsnoop
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: So 21.03.10 21:04 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
msdn.microsoft.com/e...ibrary/ms404305.aspx
mcsnoop Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: 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:

ausblenden C#-Quelltext
1:
this.tabControl1.Region = new Region(new RectangleF(this.tabPage1.Left, this.tabPage1.Top + 21this.tabPage1.Width + 738this.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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: 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