【学習】WinFormsでButtonのクリックイベントを使おう(クリックで処理を実行する)

広告

これまでの学習では、

  • フォームにコントロールを配置する
  • プロパティで見た目を変える

という形で画面を作ってきました。

しかし、ボタンを配置しただけでは、クリックしても何も起きません。

クリックしたときに処理を実行する

という仕組みが必要です。

今回は Button の Click イベント を使って、ボタンを押したときに処理を実行するアプリを作ります。

今日作るもの

実行 ボタンを押すと

こんにちは!

とメッセージボックスが表示されます。

さらに、ラベルにも「クリックされました」と表示されるようにします。


ソリューションとプロジェクトを作る

Visual Studio で新しいプロジェクトを作ります。

  • テンプレート: Windows Forms アプリ (.NET Framework)
  • ソリューション名: ButtonSample
  • プロジェクト名: ButtonEventDemo

作成すると Form1 が表示されます。


フォームに配置するコントロール

フォームに次の2つを配置します。

コントロール名前
ButtonexecButton
LabelmessageLabel

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 で最もよく使うイベント です。ここを押さえれば、実用的なアプリの第一歩が踏み出せます。

訪問数 3 回, 今日の訪問数 3回

広告