5

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

4

4 に答える 4

2

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

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 でこれをテストする必要があります。

于 2011-07-26T07:46:05.680 に答える
2

単純

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

        base.OnCreateControl();
    }
}

私もこれに直面しました(タブコントロールに透明な背景のトラックバーが必要で、ビジュアルスタイルが有効でも無効でも機能します)。そして、これは私にとってはうまくいきました。

于 2011-04-17T09:27:22.527 に答える
1

CodePlexのTransparentTrackBarプロジェクトを参照してください。

于 2009-03-17T02:54:03.827 に答える
-1

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

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

于 2013-02-19T20:34:42.167 に答える