C#でイベントハンドラを追加する方法
C#でイベントハンドラを追加する方法をご紹介します。
条件
- Visual Studio 2017
前提
以下のように、フォームにボタンを配置しているものとします。
実装
プロパティによる設定
クリックイベントの場合、デザイン画面において、対象のコンポーネントをダブルクリックすることで自動的にソース生成&イベントへの設定が行われます。
ソース
以下は、button1をダブルクリックした段階で生成されたソースです。
private void button1_Click(object sender, EventArgs e)が自動生成されました。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace sample2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { } } }
プロパティ設定
デザイン画面において、button1のプロパティでイベントを確認すると、アクション > Clickに「button1_Click」が指定されていることがわかります。
ソース
クリックイベントのメソッド内に処理を記述することで、クリック時に記述した処理を実行することが出来ます。
以下では、button1をクリックした際、メッセージボックスを表示しています。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace sample2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { MessageBox.Show("ボタン1がクリックされました!"); } } }
実行結果
コードへの追加
デザイン画面のプロパティ設定を行わずとも、コードに記述することでコンポーネントにイベントハンドラを追加することが出来ます。
クリックイベント
プロパティ設定
以下では、button1のプロパティでイベントを確認すると、アクション > Clickに何も指定していない状態です。
ソース
フォームの初期処理で、button1のクリックイベントハンドラを追加します。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace sample2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); button1.Click += new EventHandler(button1_Click); // クリックイベントハンドラを追加 } private void button1_Click(object sender, EventArgs e) { MessageBox.Show("ボタン1がクリックされました!"); } } }
実行結果
このような実装でも、プロパティでイベントを設定した場合と同様の動作となります。
マウスイベント
マウスイベントも同様に追加することが出来ます。
ソース
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace sample2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); button1.Click += new EventHandler(button1_Click); // クリックイベントハンドラを追加 button1.MouseMove += new MouseEventHandler(button1_MouseMove); // マウスイベントハンドラを追加 } private void button1_Click(object sender, EventArgs e) { MessageBox.Show("ボタン1がクリックされました!"); } private void button1_MouseMove(object sender, MouseEventArgs e) { MessageBox.Show("ボタン1上でカーソルが移動しました!"); } } }
実行結果
参考
コードでイベントにイベントハンドラを追加する (C#プログラミング)
https://www.ipentec.com/document/csharp-add-event-handler-by-code
“C#でイベントハンドラを追加する方法” に対して1件のコメントがあります。