Frage

Ich habe eine TrackBar Kontrolle auf einem TabPage in einem TabControl. Der Hintergrund des TrackBar wird in grau gezeichnet, während die TabPage als weißes gezogen wird. Es gibt keinen Weg, um die Backcolor-Eigenschaft des TrackBar zu transparent setzen, und ich kann die Zeichnung nicht außer Kraft setzen, weil es keine DrawMode Eigenschaft für das TrackBar ist. Welche Möglichkeiten habe ich in die TrackBar fit zu machen? Warum ist es nicht visuelle Stile unterstützen?

War es hilfreich?

Lösung

Sie können an dem TransparentTrackBar Projekt auf CodePlex zu suchen.

Andere Tipps

Einfach

class MyTransparentTrackBar : TrackBar
{
    protected override void OnCreateControl()
    {
        SetStyle(ControlStyles.SupportsTransparentBackColor, true);
        if (Parent != null)
            BackColor = Parent.BackColor;

        base.OnCreateControl();
    }
}

ich dies auch konfrontiert (benötigen einen transparenten Hintergrund trackbar auf einer Tab-Steuerung, die aktiviert und deaktiviert mit beiden visualstyles funktioniert). Und das funktionierte für mich.

stören würde nicht hier, aber keiner der oben genannten Vorschläge für mich gearbeitet. Was den Trick waren die folgenden Zeilen:

private const int WM_DWMCOMPOSITIONCHANGED = 0x031A;
private const int WM_THEMECHANGED = 0x031E;

protected override void OnVisibleChanged(EventArgs e)
{
    Color color = this.BackColor;
    trackBarQuality.BackColor = Color.FromArgb(color.R, color.G, color.B);
}

protected override void WndProc(ref Message m)
{
    if (m.Msg == WM_DWMCOMPOSITIONCHANGED || m.Msg == WM_THEMECHANGED)
        OnVisibleChanged(new EventArgs());

    base.WndProc(ref m);
}

So eliminiere ich im Grunde den Alpha-Kanal von der Hintergrundfarbe. müssen noch testen diese mit Vista und Win 7, though.

Die offensichtliche Lösung scheint die TrackBar des Backcolor im System-ControlLightLight zu sein zu setzen.

(Aber das Problem mit einer offensichtlichen Lösung zu vier Jahren alte Frage ist, dass es bedeutet wahrscheinlich, dass ich etwas falsch verstanden habe.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top