■ はじめに
https://dk521123.hatenablog.com/entry/2010/12/12/164101
https://dk521123.hatenablog.com/entry/2010/12/25/221009
の続き。
目次
【1】イベントを登録する 【2】イベントが発生したオブジェクトを判別する
【1】イベントを登録する
// 初期化処理(コンストラクタ内) public Form1() { InitializeComponent(); // 追加(初期化処理)↓ // ★ここ重要★ グループボックス内にあるコントロールを1つずつ指定 foreach (var item in this.groupBox1.Controls) { CheckBox check = item as CheckBox; // CheckBox型として変換 // ★ここ重要★ チェックドチェンジイベントの時に「checkBox_CheckedChanged」メソッドを呼ぶように指定 check.CheckedChanged += new EventHandler(checkBox_CheckedChanged); } // 追加(初期化処理)↑ }
イベント後の処理
* 初期化時に、チェックドチェンジイベントの時に「checkBox_CheckedChanged」メソッドを 呼ぶように指定しているので、その後の処理を以下に記述している
サンプル
#region チェックボックスのチェンジイベント /// <summary> /// チェックボックスのチェンジイベント /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void checkBox_CheckedChanged(object sender, EventArgs e) { CheckBox target = sender as CheckBox; if (target.Checked) { target.BackColor = SystemColors.Highlight; // チェックボックスがクリックされたら、バックカラーをHighlightに変える foreach (var item in this.groupBox1.Controls) { CheckBox check = item as CheckBox; if (check != target) { check.Checked = false; // クリックされた以外のチェックボックスはチェックを外す check.BackColor = SystemColors.Window; // クリックされた以外のチェックボックスはデフォルト表示 } } } else { target.BackColor = SystemColors.Window; } } #endregion
参考資料
http://yas-hummingbird.blogspot.com/2008/12/c.html
http://yas-hummingbird.blogspot.com/2008/12/c_12.html
【2】イベントが発生したオブジェクトを判別する
* イベントハンドラの引数「sender」を as演算子を使って、キャストする
サンプル
private void button1_Click(object sender, EventArgs e) { Button btn = sender as Button; }
参考資料
http://blog.goo.ne.jp/shimono_tetsuo/e/209b10a56d603b4de6c3cf8f77ff2561
http://noudikara.jugem.jp/?eid=16
■ 補足:イベントの引数について
System.EventArgs クラス
* イベントに関する情報を保持
参考資料
http://www.yo.rim.or.jp/~nag/cgi-bin/wiki.cgi?p=Visual+Studio.NET
関連記事
Delegate / Event ~ 入門編 / Delegate ~
https://dk521123.hatenablog.com/entry/2010/12/12/164101
Delegate / Event ~ 入門編 / Event ~
https://dk521123.hatenablog.com/entry/2010/12/25/221009