Laden...

Farbe Hintergrund TabControl ändern

Erstellt von zion00 vor 14 Jahren Letzter Beitrag vor 14 Jahren 4.679 Views
Z
zion00 Themenstarter:in
2 Beiträge seit 2010
vor 14 Jahren
Farbe Hintergrund TabControl ändern

Hallo,

ich habe das Problem, dass ich eine Anwendung erstelle die keine Standard-Hintergrundfarbe (Control) hat. Wenn ich jetzt eine normales TabControl zufüge ergibt sich so ein hässlicher Hintergrundschatten am rechten und oberen Rand der Control. Wie kann man den entweder transparent machen bzw. der Hintergrundfarbe der Form anpassen?

Ich weis bereits, dass der Grund für diesen Schatten das Windows XP Theme ist. Ich habe auch schon die zahlreichen Themen durchgesehen die hier und in anderen Foren diskutiert wurden. Leider habe ich nach langem Suchen und probieren keine wirklich nützliche Lösung.

Daher meine Frage: Kann mir jemand einen Tipp geben wie ich entweder eine eigene TabControl mit den Eigenschaften die ich ändern möchte erstelle oder wie ich die DrawItem-Methode umschreiben muss um die Farbe des Schattens anzupassen.

Freu mich über jeden Tipp. Danke...

1.002 Beiträge seit 2007
vor 14 Jahren

Hallo zion00,

hast du mal versucht, das TabControl in ein Panel mit entsprechender Hintergrundfarbe zu packen, die du dann anpassen kannst?

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

2.921 Beiträge seit 2005
vor 14 Jahren

Dieser Link zeigt wie man manche Farbeigenschaften verändern kann:

BackColor TabControl

s. auch:

[Artikel] Custom Window Border für Form's

Möglicherweise reicht es auch schon die Border des TabPages auf "Flat" zu setzen.
bzw. dies zu setzen:


            Dim t As TabPage
            t.BorderStyle = BorderStyle.FixedSingle 

Sind nur verweise, wo die wirkliche Lösung gefunden werden könnte.

Weitere Idee, mittels von Control-Render-Funktionen?

Vielleicht findest Du so ja was.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

Z
zion00 Themenstarter:in
2 Beiträge seit 2010
vor 14 Jahren

Die Farbänderung der einzelnen Tabpage ist kein Problem. Ich möchte aber gern die Hintergrundfarbe der TabControl ändern. Wie aus dem ersten Link von dr4g0n76 hervorgeht gibt es für dieses Problem keine Unterstützung. Zumindest scheint es so.

Wenn man ein komplett eigenes Control bastelt, kann man sicherlich auch die Hintergrundfarbe ändern. Das will ich aber ehrlich gesagt nicht machen, weil mir das zuviel Aufwand ist. Im Grunde ist meine Aufgabe eine Anwendung mit einem TabControl zu schreiben und nicht ein TabControl zu basteln bei dem man die Hintergrundfarbe ändern kann. Aber das Problem scheint wirklich sehr tricky zu sein. Von daher werde ich dieses Feature wahrscheinlich vergessen müssen.

dr4g0n76:
Dein Codeausschnitt bezieht sich leider nur auf die TabPage nicht auf das TabControl. Diesen Ansatz habe ich schon probiert. Aber trotzdem danke...

m0rius:
Die Lösung mit dem Panel habe ich probiert. Leider keine Lösung meines Problems...

S
469 Beiträge seit 2007
vor 14 Jahren

Es gibt unter anderem bei CodeProject (aber auch wenn du bei google nach OwnerDraw TabControl suchst) einige ganz gute und vor allem einfache Beispiele, wie man das erreichen kann. Ist auch wirklich nicht schwer oder aufwendig, du musst das Control auch nicht komplett neu schreiben, sondern nur festlegen, wie der Header gezeichnet werden soll.
Wie du schon selbst bemerkt hast, ganz einfach durch Setzen der Hintergrundfarbe, so wie es bei sonstigen Controls ist, geht das leider nicht, weshalb auch immer.

gruß
sth_Weird

++++++++++++++++++++~+
Fluchen ist die einzige Sprache, die jeder Programmierer perfekt beherrscht


Linux is for free...if your time is worth nothing
++++++++++++++++++++~+

2.921 Beiträge seit 2005
vor 14 Jahren

s. auch hier:

Farbe von TabControl ändern?

Und ab jetzt:

Suche mal bitte selber im Forum und poste die besten Treffer hier, danke.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.