質問: false; } } } ``` この方法が一番良さそうでしたが、マウスオーバー時にボタンが凹むモーションを止めることができなかったので断念しました。 * 最後に よろしければ、無効状態のチェックボックスの文字色だけ変更する方法、もしくはマウスオーバー時にボタンが凹むモーションを止める方法を教えてください。 他に良い方法があれば、それも募集しています。
回答: 提示されている課題の解決案を3つ提示できますが、どれもあんまりおすすめできません。他の回答があればそちらをお勧めしたいところです。コード断片の提示が難しいので Github にサンプルを上げました。 拡張チェックボックスのクラスが以下の1~3に対応しています。案1以外は Windows API の知識が必要とされるため、.NET Framework の知識だけでは対応が難しいかもしれません。 ### 1.独自に描画する方法 Appearance が Button の CheckBox を独自に描画するには .NET Framework のクラスライブラリでは機能不足になります。解説がめんどくさいのでサンプルを見てください。 ### 2.WM_PAINT を処理しない方法 WM_PAINT を処理しないことにより DWM が直前に描画した内容を再現することで実現します。Windows 7 以前の DWM を無効にできる環境では動作しません。 ### 3.WM_ENABLE を処理しない方法 WM_ENABLE を処理しないことにより、無効状態での描画を阻止することができます。この仕様である期間が長いですが、今後もこの動作である保証はありません。 追記 案1の問題点は以下のようにコントロールと完全に同じ位置に描画するのが結構難しいことにあります。 !案1の問題点.png