Question

J'ai un contrôle TrackBar sur une TabPage à l'intérieur d'un TabControl. L'arrière-plan de la TrackBar est dessiné en gris, tandis que la TabPage est dessinée en blanc. Il n'y a aucun moyen de définir la propriété BackColor de la TrackBar sur transparente et je ne peux pas remplacer le dessin car il n'y a pas de propriété DrawMode pour la TrackBar. Quelles sont les options disponibles pour adapter la TrackBar? Pourquoi ne prend-il pas en charge les styles visuels?

Était-ce utile?

La solution

Vous pouvez également consulter le projet TransparentTrackBar sur CodePlex.

Autres conseils

Simple

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

        base.OnCreateControl();
    }
}

J'y ai également fait face (j'avais besoin d'une barre de suivi d'arrière-plan transparent sur un contrôle de tabulation, qui fonctionnerait avec les styles visuels activés et désactivés). Et cela a fonctionné pour moi.

Je ne voudrais pas intervenir ici, mais aucune des suggestions ci-dessus n'a fonctionné pour moi. Qu'est-ce que l'astuce étaient les lignes suivantes:

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

Donc, en gros, j’élimine le canal alpha de la couleur de fond. Reste à tester cela avec Vista et Win 7, cependant.

La solution évidente semble être de définir le BackColor de la TrackBar sur System-ControlLightLight.

(Mais le problème avec une solution évidente à une question vieille de quatre ans est que cela implique probablement que j'ai mal compris quelque chose.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top