2009-08-11 10 views
0

Ich möchte ein LinkLabel mit einem transparenten Hintergrund über ein TabControl legen. Das Registersteuerelement hat keine Registerkarte NO.Transparent LinkLabel über TabControl

Da es nicht möglich ist, einem TabControl andere Steuerelemente als TabPages hinzuzufügen, füge ich das LinkLabel dem Steuerelement hinzu, das TabControl enthält, und verwende dann BringToFront auf dem LinkLabel. Dies zeigt es über das TabControl an.

Problem: Das LinkLabel wird als transparent (BackColor-Eigenschaft) angezeigt, aber anstatt die Farbe der TabControl als Hintergrund anzuzeigen, wird die Hintergrundfarbe des übergeordneten Elements angezeigt, das Steuerelement, das auch das TabControl enthält. Von dem, was ich verstehe, ist dies normales Verhalten, da eine transparente Hintergrundfarbe bedeutet, dass es nur die Farbe des Elternteils nimmt.

Frage: Gibt es eine Lösung, um mein LinkLabel mit der Hintergrundfarbe des TabControl anzuzeigen?

Dank

+0

Bearbeiten: Ich wurde vorgeschlagen, TabControlRenderer-Klasse zu verwenden, um den LinkLabel-Hintergrund zu rendern, der auch funktioniert. – David

Antwort

1

ich darüber falsch sein kann, aber ich denke, dass, wenn Sie das Linklabel der Backcolor-Eigenschaft in Code zu ändern (zB in Load-Ereignisse des Formulars, im Gegensatz zu nur im Designer Einstellung) die passe Farbe Ihres TabControls, funktioniert es so, wie Sie es wollen.

+0

Vielen Dank für Ihre Antwort, aber es ist bereits, was ich tue (Einstellung aus dem Code) und es funktioniert nicht :( Offenbar BackColor = Transparent bedeutet, dass es die Hintergrundfarbe des Elternteils nehmen wird. – David

+0

Ja, BackColor auf Transparent, bedeutet eigentlich, verwende die BackColor des Elternteils. Ich denke, was Music zu sagen versuchte, war die BackColor (in Code, zur Laufzeit) zu tabcontrol.BackColor. – NascarEd

+0

Was Ed sagte. :) – MusiGenesis

0

Danke für Ihre Antworten. Ich verstehe jetzt, was du meintest.

Die Verwendung der Registerkarte BackColor der Registerkarte wird nicht funktionieren, da diese Eigenschaft immer das ColorSystemColors.Control zurückgibt, das gräulich ist. Wenn Sie jedoch visuelle Stile verwenden (z. B. das Standarddesign von XP), ist die Hintergrundfarbe des TabControls weiß. Ich kann weiß auch nicht verwenden, da das Tab-Steuerelement nicht rein weiß ist, sondern weiß ...

+0

Schauen Sie sich alle verfügbaren Systemfarben an und Sie finden wahrscheinlich die, die Sie benötigen. – MusiGenesis

+0

Aus meiner Sicht ist es keine Systemfarbe, aber es ist in uxtheme.dll definiert. Vielleicht wäre eine Lösung, native Methoden aus dieser DLL zu verwenden, um den Hintergrund meines Labels zu zeichnen ... zu viel Mühe. Ich landete mit einem transparenten Label, das ich dort gefunden habe, und änderte es so, dass es wie ein LinkLabel aussieht. http://www.codeproject.com/KB/miscctrl/SimpleLine.aspx Danke für Ihre Hilfe trotzdem :) – David