質問
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歳の質問に対する明らかな解決策の問題は、おそらく私が何かを誤解したことを暗示しているということです。)
所属していません StackOverflow