Domanda

Ho un controllo TrackBar su una TabPage all'interno di un TabControl. Lo sfondo del TrackBar viene disegnato in grigio mentre TabPage viene disegnato in bianco. Non è possibile impostare la proprietà BackColor di TrackBar su trasparente e non posso ignorare il disegno perché non è presente la proprietà DrawMode per TrackBar. In quali opzioni devo adattare la TrackBar? Perché non supporta gli stili di visualizzazione?

È stato utile?

Soluzione

Potresti voler guardare il progetto TransparentTrackBar su CodePlex.

Altri suggerimenti

semplice

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

        base.OnCreateControl();
    }
}

Ho anche affrontato questo aspetto (era necessaria una trackbar con sfondo trasparente su un controllo a schede, che funzionasse con entrambi gli stili di visualizzazione abilitati e disabilitati). E questo ha funzionato per me.

Non interferirebbe qui, ma nessuno dei suggerimenti di cui sopra ha funzionato per me. Che cosa ha fatto il trucco erano le seguenti righe:

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

Quindi sostanzialmente elimino il canale alfa dal colore di sfondo. Devo ancora provarlo con Vista e Win 7, tuttavia.

La soluzione ovvia sembra essere quella di impostare BackColor di TrackBar su System-ControlLightLight.

(Ma il problema con una soluzione ovvia alla domanda di quattro anni è che probabilmente implica che ho frainteso qualcosa.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top