我有一个TabControl内的TabPage的一个的TrackBar控制。所述的TrackBar的背景为灰色被吸入而TabPage的被绘制为白色。有没有办法对跟踪条的背景色属性设置为透明,因为没有为跟踪条没有DrawMode属性我不能覆盖图。做什么选择我都做的TrackBar适合吗?为什么它不支持视觉样式?

有帮助吗?

解决方案

您可能想看看 TransparentTrackBar 在CodePlex项目。

其他提示

简单

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

        base.OnCreateControl();
    }
}

我也面临这个(需要上制表控制一个透明背景的TrackBar,将与启用和禁用两个VISUALSTYLES工作)。这为我工作。

会不会干涉在这里,但没有上述建议为我工作。 什么做的伎俩是以下行:

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);
}

因此,我基本上消除来自背景颜色的alpha通道。仍然有与Vista和Win 7来测试此,虽然。

显而易见的解决方案似乎是设置的TrackBar的背景色到系统ControlLightLight。

(但有一个明显的解决方案,以四十岁讨论的问题是,它可能意味着我误解的东西。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top