2010-11-24 8 views
2

私はTabControlを作って、いくつかのコントロール(ラベル、テキストボックス、ボタン、コンボボックスのドロップダウン)を使いたいと思っています。問題は、タブを選択すると、既定の背景色が、以前使用されていたフォームのデフォルトの背景色と同じではないということです。タブとコントロールの色が似ていて、見栄えが悪いです。アクティブなタブページは私のコントロールと同じ色です

私は見ましたが、タブを色分けすることは不可能だと言われています。これに対する良い解決策は何ですか?背景を暗くするために、何らかの種類のフレーム、ラベル、または他のものをタブの中に置くべきですか?

+1

これはwpfアプリケーションかwinformsアプリケーションですか – basarat

答えて

1

それはあなたのフォームと同じ背景色を使用するようにタブページを取得するのは簡単です:

  1. は、変更したいTabPageがデザイナーに表示されていることを確認してください。それをクリックして選択します。

  2. プロパティウィンドウでUseVisualStyleBackColorプロパティを見つけて、Falseに設定します。

そしてボーナスとして、あなたはFalseにこのプロパティを設定したら、あなたはそのBackColor propertyを使用してTabPageために好きな背景色を指定することができます。

これは、タブページがビジュアルスタイル(Windowsで定義されたテーマなど)でレンダリングされないようにするためです。デフォルトのテーマでは、実際にタブページには、他の3D要素(フォームやボタンなど)をペイントするのに使用される色のわずかに明るい色合いがペイントされます。問題は(特にAeroテーマの下で)、標準の3D要素の色はとても明るいので、タブページはほとんど白く見えます!

あなたは、フォームの標準の背景色に対するコントロールのコントラストに満足している場合は、私はあなたが単にFalseUseVisualStyleBackColorプロパティを設定し、カスタムの背景色を指定せずにそのままにしておくことを示唆しています。ユーザーのデフォルトテーマを尊重することは、アプリケーションを自分自身にスキンティングするのではなく、一般的にベストプラクティスです。

EDIT:注これはTabControlの上部のタブそのものの色を変更しないこと。そのためには、それを所有者が描いたものとして指定し、そのDrawItemイベントを処理しなければならないので、自分で絵をすべてやり直す必要があります。しかし、ほとんどの場合、これは必要ではありません。

+0

ありがとうございます。私は今、簡単な解決策を探していました。だから私はUseVisualStyleBackColorをfalseに設定します。私は派手なアプリケーションを作っていないので、その解決策は今のところ十分です。私は、ビジュアルスタイルをレンダリングしないようにタブを強制することはあまり優雅ではないことに同意しますが。 –

+0

@カスパー:ああ、私はエレガントではないとは言わなかった。 ;-)私は自分のアプリケーションで常に使用しています。なぜなら、デフォルトで使用する非常に明るいバックグラウンドが、コントロールに含まれているコントロールを見難くすることに同意するからです。私が醜いと思うのは、非標準的な肌の色です。とにかく、それはあなたのために働いてうれしいです。 –

関連する問題