独自のボタンクラスがあると、On何タラ系メソッドが使えます。
ButtonクラスにはOnClickメソッドがあるので、これを使えばイベントにデリゲートを関連づける作業がいらなくなります。
では、早速プログラムを見てみましょう。
// button03.cs using System; using System.Drawing; using System.Windows.Forms; class button03 { public static void Main() { MyForm mf = new MyForm(); MyButton mb1 = new MyButton("ボタン1", mf, new Point(10, 10)); MyButton mb2 = new MyButton("ボタン2", mf, new Point(20 + mb1.Width, 10)); Application.Run(mf); } } class MyForm : Form { public MyForm() { Text = "猫でもわかるプログラミング"; BackColor = SystemColors.Window; } } class MyButton : Button { string btnstr; public MyButton(string str, Form form, Point pt) { Text = str; Parent = form; Location = pt; BackColor = SystemColors.Control; btnstr = str; } protected override void OnClick(EventArgs e) { base.OnClick(e); MessageBox.Show(btnstr + "を押したね", "猫でもわかるプログラミング", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } }最期の方のMyButtonクラスを見てみましょう。これは、Buttonクラスを継承しています。
コンストラクタMyButtonは、引数を利用してMyButtonクラスのText, Parent, Locationプロパティを設定しています。また、Textは、btnstrフィールドにも保存しています。これを利用して、ボタンの区別をしようというものです。
OnClickメソッドをオーバーライドしています。OnClickメソッドは、Controlクラスから継承されてきています。これで、Clickイベントに対応できます。
ここでは、「btnstr + "を押したね"」というメッセージボックスを出していますが、btnstrは、コンストラクタでもらってきたstringですね。
Mainメソッドでは、MyButton(表示する文字列, 親, 位置)でボタンを作ることができるので、すっきりした形になります。
実行結果は、次のようになります。
Update 28/Oct/2006 By Y.Kumei