【学習】WinFormsでButtonのクリックイベントを使おう(クリックで処理を実行する)
これまでの学習では、
- フォームにコントロールを配置する
- プロパティで見た目を変える
という形で画面を作ってきました。
しかし、ボタンを配置しただけでは、クリックしても何も起きません。
クリックしたときに処理を実行する
という仕組みが必要です。
今回は Button の Click イベント を使って、ボタンを押したときに処理を実行するアプリを作ります。
今日作るもの
実行 ボタンを押すと
こんにちは!
とメッセージボックスが表示されます。
さらに、ラベルにも「クリックされました」と表示されるようにします。
ソリューションとプロジェクトを作る
Visual Studio で新しいプロジェクトを作ります。
- テンプレート: Windows Forms アプリ (.NET Framework)
- ソリューション名: ButtonSample
- プロジェクト名: ButtonEventDemo
作成すると Form1 が表示されます。
フォームに配置するコントロール
フォームに次の2つを配置します。
| コントロール | 名前 |
|---|---|
| Button | execButton |
| Label | messageLabel |
execButton の Text を「実行」、messageLabel の Text を空にしておきます。
イベントを登録する
execButton をダブルクリックすると、Click イベントのハンドラが自動作成されます。
Form1.cs に execButton_Click というメソッドが追加され、その中に処理を書けます。
完成コード
using System;
using System.Windows.Forms;
namespace ButtonEventDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void execButton_Click(object sender, EventArgs e)
{
MessageBox.Show("こんにちは!");
messageLabel.Text = "クリックされました";
}
}
}
プログラムの流れ
実行ボタンをクリック
↓
execButton_Click が呼ばれる
↓
MessageBox.Show でメッセージ表示
↓
messageLabel.Text を更新
イベントハンドラの形
Click イベントのハンドラは、次の形になります。
private void execButton_Click(object sender, EventArgs e)
| 引数 | 意味 |
|---|---|
| sender | イベントを発生させたコントロール(この場合は execButton) |
| e | イベントに関する追加情報(Click ではあまり使わない) |
複数のボタンから同じハンドラを呼ぶ場合、sender を (Button)sender のようにキャストして、どのボタンが押されたか判定できます。
重要ポイント
Button の Click イベント は、ボタンを押したときに処理を実行するための仕組みです。
- ダブルクリック でイベントハンドラが自動作成される
- ハンドラの中に、クリック時に実行したいコードを書く
- MessageBox.Show でメッセージを表示できる
- Label の Text を変更して、画面に結果を表示できる
- sender と EventArgs は、イベントの基本形。まずは形として覚えておけばよい
発展アイデア
Button の Click イベントを使うと、次のようなものも作れます。
- TextBox と組み合わせて、入力した文字を Label に表示する
- 複数のボタンで、それぞれ違う処理を実行する
- Timer と組み合わせて、Start / Stop ボタンでタイマーを制御する
- 計算ボタンで、入力値から結果を求めて表示する
Button の Click イベントは WinForms で最もよく使うイベント です。ここを押さえれば、実用的なアプリの第一歩が踏み出せます。





ディスカッション
コメント一覧
まだ、コメントがありません