このBackColor
プロパティは、既定ではアンビエント プロパティです。つまり、親コントロールから値を継承します。特定の値に明示的に設定すると、周囲の性質が上書きされ、その特定の値を使用するように強制されます。
標準の Windows ボタン コントロールはカスタム色をサポートしていないため、WinForms は実際にコントロールをカスタム描画して、デザイナーがその色をオーバーライドできるようにします。そうすれば、醜い緑または赤のボタンが必要な場合でも、それを行うことができます。
ここで起こったことは、ボタン コントロールのカスタム背景色を効果的に設定したことです (3D コントロールの背景色に設定しましたが、簡単に紫にすることもできました)。これにより、WinForms はコントロールをカスタム描画するように強制されます。指定した色で背景をペイントします。これにより、「フラットな」外観が得られます。背景色は、デフォルトのグラデーション効果を使用するのではなく、単一のカスタム カラーでペイントされるようになりました。ボタンは実際にはフラット 3D コントロール カラーでペイントされているため、Windows クラシック (Aero 以前) テーマではそれほど目立ちませんでした。しかし、Aero はグラデーションやその他の「ホット」な効果を追加したため、これは非常に目立ちます。
設定した値をクリアしてプロパティのアンビエントな性質を復元するには、[プロパティ] ウィンドウでプロパティを右クリックし、[リセット] を選択します。default(Color)
プロパティを次のように設定することで、コードを使用して実行することもできます。
myButton.BackColor = default(Color);
UseVisualStyleBackColor
また、プロパティを に戻す必要があります。これは、カスタム背景色をサポートするためにプロパティが変更されるたびに、true
自動的に に設定されます。false
BackColor
または、そのようなカスタム プロパティを完全に無視するように WinForms に指示し、Windows にボタン コントロールを描画するように指示することもできます。FlatStyle
これを行うには、プロパティを に設定しますFlatStyle.System
。
繰り返しますが、これはデザイナーまたはコードを介して行うことができます。これにより、背景色などのばかげたことを変更して恐ろしく醜いコントロールを作成するのを防ぐだけでなく、ホバー時の微妙な Aero フェード効果など、Win32 ボタン コントロールのネイティブな動作を WinForms アプリケーションに復元します。
これがデフォルトではない理由がわかりません。醜い非標準のコントロールを取得するには、特別なリクエストを行う必要があります。それは自動的に起こるべきではありません。何年もの間、あらゆる種類の醜いコントロールを作成してきた VB 6 プログラマーへの譲歩だったとしか思えません。