2008-09-15 14 views
0

タブページで.NETの標準タブコントロールを使用していて、ルックアンドフィールを少し変えようとすると、タブコントロールではなくタブページのバックカラーを変更できます。プロパティは使用可能ですが、設定することはできますが、効果はありません。タブのコントロールではなくページのバックカラーを変更した場合、それは...醜く見えます。BackColorが.NETのTabControlsで動作しないのはなぜですか?

私はマイクロソフトがそれを設定したくないと知っています。 MSDN: 'このプロパティは.NET Frameworkインフラストラクチャをサポートしており、コードから直接使用するためのものではありません。このメンバはこのコントロールには意味がありません。 '.NETインフラストラクチャをサポートする色のコントロールプロパティ。 ...信じがたい。

私はMicrosoftがそれを変更することを望んだが、しなかった。私は、これを修正するためにpaintメソッドをオーバーライドする独自のTabControlクラスを作成しました。しかし、これは本当に最高のソリューションですか?

このコントロールでBackColorをサポートしていない理由は何ですか?これを解決するあなたの解決策は何ですか?ペイントメソッドをオーバーライドするよりも優れたソリューションはありますか?

+0

MSが何かした理由を尋ねるのはちょっと疑わしいです。あなたはあなたの質問に言い直すべきです。 – GEOCHET

答えて

1

タブの背景色は、OSの画面のプロパティによって制御されているようです。外観タブの下にあるWindowsとボタンのプロパティ(Windows XP)。 Windowsクラシックスタイルに設定すると、タブの色は変わりません。 Windows XPスタイルに設定すると、選択すると少なくとも灰色から白に変わります。背景色をコントロールできないことが特徴です!

2

Rajeshのブログの解決策は本当に便利ですが、コントロールのタブ部分の色を変えます。私の場合、私は別の色の背景にtabcontrolを持っていた。タブ自体はグレーで問題はありませんでしたが、タブの右側の領域はグレーの帯として表示されていました。

この色を背景の色に変更するには、次のコードをDrawItemメソッドに追加する必要があります(Rajeshの解説を参照)。私はVB.Netを使用しています:

... 

Dim r As Rectangle = tabControl1.GetTabRect(tabControl1.TabPages.Count-1) 
Dim rf As RectangleF = New RectangleF(r.X + r.Width, r.Y - 5, tabControl1.Width - (r.X + r.Width), r.Height + 5) 
Dim b As Brush = New SolidBrush(Color.White) 
e.Graphics.FillRectangle(b, rf) 

... 

は、基本的には、タブコントロールの右側に最後のタブの右側で作られた四角形を取得し、ご希望のカラーにそれを入力する必要があります。

0

ありがとう、LauraM。あなたは私を正しい道に導くのを手伝った。オスカーが提供したリンクはすでに見つかっていたが、最後には何もしなかった。

最終的には、フォーム上に背景イメージが必要だったため、または親が背景イメージなしのものであればバックカラーが必要だったため、かなり変更する必要がありました。彼らが存在するかどうかを示すアイコンも必要でした。私はTabControl BackColor fix postにすべてのコードを書いています。

+1

ブログの投稿を保存してくれてありがとう。ああ待って、あなたはしなかった。 –

関連する問題