0

タブ ページに .NET の標準タブ コントロールを使用し、ルック アンド フィールを少し変更しようとすると、タブ ページの背景色を変更できますが、タブ コントロールは変更できません。プロパティは使用可能です。設定できますが、効果はありません。タブ コントロールではなく、ページの背景色を変更すると、見栄えが悪くなります。

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

何年にもわたってマイクロソフトがそれを変更することを望んでいましたが、そうではありませんでした。これを修正するために paint メソッドをオーバーライドする独自の TabControl クラスを作成しました。しかし、これは本当に最善の解決策でしょうか?

このコントロールで BackColor がサポートされていない理由は何ですか? これを修正するための解決策は何ですか? paint メソッドをオーバーライドするよりも良い解決策はありますか?

4

3 に答える 3

2

Rajesh のブログのソリューションは非常に便利ですが、コントロールのタブ部分のみに色を付けます。私の場合、別の色の背景にタブコントロールがありました。タブ自体は灰色で問題ありませんでしたが、タブの右側の領域が灰色の帯として表示されていました。

この色を背景の色に変更するには、次のコードを 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)

...

基本的に、最後のタブの右側から作成された長方形をタブ コントロールの右側に配置し、それを目的の色で塗りつぶす必要があります。

于 2008-11-06T10:49:52.640 に答える
1

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

于 2008-10-17T22:47:05.367 に答える
0

ありがとう、LauraM。あなたは私を正しい軌道に乗せるのを手伝ってくれました。私はオスカーが提供したリンクをすでに見つけていましたが、それは最後のストリップには何もしませんでした.

最終的には、フォームの背景画像がにじみ出る必要があったため、または親が背景画像のないものである場合は背景色が必要だったため、かなり変更する必要がありました。また、存在するかどうかを示すアイコンも必要でした。TabControl BackColor 修正投稿にすべてのコードを記載した完全な記事があります。

于 2009-05-01T04:59:52.980 に答える