質問

TabControl内のTabPageにTrackBarコントロールがあります。 TrackPageの背景は灰色で描画され、TabPageは白で描画されています。 TrackBarのBackColorプロパティを透明に設定する方法はありません。TrackBarのDrawModeプロパティがないため、図面をオーバーライドできません。 TrackBarを適合させるにはどのようなオプションが必要ですか?なぜ視覚スタイルをサポートしないのですか?

役に立ちましたか?

解決

CodePlexの TransparentTrackBar プロジェクトをご覧ください。

他のヒント

シンプル

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

        base.OnCreateControl();
    }
}

私もこれに直面しました(タブコントロールに透明な背景のトラックバーが必要で、ビジュアルスタイルの有効化と無効化の両方で動作します)。そしてこれは私のために働いた。

ここでは干渉しませんが、上記の提案はどちらもうまくいきませんでした。 トリックは次の行でした:

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

したがって、基本的に背景色からアルファチャネルを削除します。ただし、VistaおよびWin 7でこれをテストする必要があります。

明らかな解決策は、TrackBarのBackColorをSystem-ControlLightLightに設定することです。

(ただし、4歳の質問に対する明らかな解決策の問題は、おそらく私が何かを誤解したことを暗示しているということです。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top