Pergunta

Eu tenho um controle TrackBar em um TabPage dentro de um TabControl. O fundo do TrackBar está a ser desenhada na cinza enquanto TabPage está a ser tirado como branco. Não há nenhuma maneira para definir a propriedade BackColor do TrackBar para transparente, e eu não posso substituir o desenho porque não há nenhuma propriedade DrawMode para o TrackBar. Quais as opções que eu tenho que fazer o ajuste TrackBar em? Por que ele não suporta estilos visuais?

Foi útil?

Solução

Você pode querer olhar para o href="http://www.codeplex.com/TransparentTrackBar" rel="nofollow noreferrer"> projeto no CodePlex.

Outras dicas

Simples

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

        base.OnCreateControl();
    }
}

Eu também enfrentou este (precisava de um trackbar transparente-fundo em um guia-controle, que irá trabalhar com ambos os VISUALSTYLES ativado e desativado). E isso funcionou para mim.

não iria interferir aqui, mas nenhuma das sugestões acima funcionou para mim. O que fez o truque eram as seguintes linhas:

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

Então eu basicamente eliminar o canal alfa da cor de fundo. Ainda tem que testar isso com o Vista e Windows 7, apesar de tudo.

A solução óbvia parece ser a de definir BackColor do TrackBar para System-ControlLightLight.

(Mas o problema com uma solução óbvia à pergunta de quatro anos de idade é que ele provavelmente implica que eu tenha entendido mal alguma coisa.)

scroll top