Background Trackbar em um TabControl
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?
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.)