Buttonクラスを継承した「ButtonEx」コントロールを作成し、フォーム上に設置して初期表示された
ときに自動的に条件に応じてボタンの外観を変えたいです。
ButtonExボタンを配置する際、デザイナでそのボタンの「Tag」プロパティに文字列を設定し、
その文字列に応じて外観を変える、変えないを判別したいです。
ただ、外観を変えるコードをオーバーライドするNewコンストラクタ内で記述しても、まだTagプロパティには
条件となる値が代入されておらず、意味がありません。
ButtonEx内で、どのメソッドをオーバーライドするなどして外観を変えるコードを記述すればよいでしょうか。
形状はそのままで単純な見た目だけ変更するなら
のようにビットマップをセットするだけです。
'ボタンに張り付けるイメージ
Button1.Image = bmp
'表示位置は中央
Button1.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter
ビットマップを使用しない場合や、ボタンの形状を変更するには
Paintのイベントで描画することになります。
また、形状を三角や丸などに変更した場合は、
クリック時やマウスオーバーしたときの
当たり判定なども変える必要があります。
「コントロールの形状を変更する」が参考になると思います。
http://msdn.microsoft.com/ja-jp/library/aa289517%28v=vs.71%29.aspx
プロパティを使うのはいかがですか?
http://dobon.net/vb/dotnet/vb6/property.html
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard47.htm
プロパティなら、関数のようにいろいろな設定ができます。デザイナのプロパティのところにも表示されます。
最初から決まったスタイルしかないなら、文字列を指定するより列挙体を使ったほうが間違いがなくなります。
質問が伝わっていないようなのですが、
外観の変え方ではく、
ButtonExクラス内で、親クラスの「どのメソッド」をオーバーライドしてその中に変えるコードを挿入すればよいでしょうか。
下記のコメントをご覧ください。
形状はそのままで単純な見た目だけ変更するなら
のようにビットマップをセットするだけです。
'ボタンに張り付けるイメージ
Button1.Image = bmp
'表示位置は中央
Button1.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter
ビットマップを使用しない場合や、ボタンの形状を変更するには
Paintのイベントで描画することになります。
また、形状を三角や丸などに変更した場合は、
クリック時やマウスオーバーしたときの
当たり判定なども変える必要があります。
「コントロールの形状を変更する」が参考になると思います。
http://msdn.microsoft.com/ja-jp/library/aa289517%28v=vs.71%29.aspx
質問が伝わっていないようなのですが、
外観の変え方ではく、
ButtonExクラス内で、親クラスの「どのメソッド」をオーバーライドしてその中に変えるコードを挿入すればよいでしょうか。
下記のコメントをご覧ください。
コンストラクタ内ではダメですよ。
親のOnPaint() をオーバーライドしないといけないですね。
質問が伝わっていないようなのですが、
外観の変え方ではく、
ButtonExクラス内で、親クラスの「どのメソッド」をオーバーライドしてその中に変えるコードを挿入すればよいでしょうか。
下記のコメントをご覧ください。