ユーザーに反応するプログラム : イベント ハンドラを作成する
更新 : 2007 年 11 月
このレッスンでは、イベント ハンドラの作成方法について説明します。
これまでのレッスンで説明したように、コントロールにはプロパティ、メソッド、およびイベントがあり、ユーザー インターフェイスの作成に使用されます。イベントは、コントロールに対して発生する、関連のある事象です。たとえば、コントロールがクリックされる、コントロールにテキストが入力される、コントロールの上をマウス ポインタが通過する、などがあります。
関連のある事象が起こると、コントロールはイベントを発生させます。つまり、あることが起こったことを知らせるためにプログラムにシグナルを送出します。プログラムは、そのイベントを処理するメソッドがあるかどうかを確認します。このようなメソッドは、イベント ハンドラと呼ばれます。たとえば、「ユーザーとの対話 : ボタンを使用する」で作成したメソッドのように、ボタンがクリックされると実行されるメソッドがそうです。
コントロールはさまざまなイベントを発生させることができますが、コントロールごとに既定のイベントが必ず 1 つあります。さまざまなコントロール イベントに対してイベント ハンドラを作成できます。このレッスンでは、ボタンの既定のイベント ハンドラである Click イベントを処理するイベント ハンドラを作成します。このイベントは、ボタンがクリックされると発生します。次に、ボタンの MouseEnter イベントと MouseLeave イベントを処理するイベント ハンドラを作成します。これらのイベントは、マウスがコントロールの上を通過するときに発生します。
やってみよう
Click イベントを処理するには
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスの [テンプレート] ペインで、[Windows アプリケーション] をクリックします。
[プロジェクト名] ボックスに「EventHandler」と入力し、[OK] をクリックします。
新しい Windows フォーム プロジェクトが開きます。
ツールボックスから、フォームに Button コントロールをドラッグします。
[プロパティ] ウィンドウで、AutoSize プロパティを True に設定します。
[表示] メニューの [コード] をクリックしてコード エディタを開きます。
コード エディタのすぐ上に、2 つのドロップダウン ボックスが表示されます。左側のボックスには、[Form1]、[(全般)]、[(Form1 イベント)] のほかに、フォーム上のすべてのコントロールのリストが表示されます。右側のボックスには、左側のボックスにリストされた項目に使用できる各イベントがリストされます。
左側のボックスで [Button1] をクリックします。
右側のボックスで [Click] をクリックします。
Button1_Click という名前の新しいイベント ハンドラが、コード エディタに表示されます。
メモ : フォーム上のコントロールをダブルクリックすることにより、コントロールの既定のイベント ハンドラを入力できます。
Button1_Click イベント ハンドラに次のコードを追加します。
MsgBox("You clicked the button")
F5 キーを押して、アプリケーションを実行します。[Button1] をクリックすると、メッセージ ボックスが表示されます。
他のイベント ハンドラを追加する
同じコントロールの別のイベント ハンドラにコードを記述できます。たとえば、ユーザーがボタン上にマウス ポインタを移動したときにボタンに表示されるテキストを変更できます。
MouseEnter イベントを処理するには
コード エディタの左側のドロップダウン ボックスで Button1 を選択し、右側のドロップダウン ボックスで MouseEnter をクリックします。
Button1_MouseEnter という名前の新しいイベント ハンドラが、コード エディタに表示されます。
Button1_MouseEnter イベント ハンドラに次のコードを追加します。
Button1.Text = "The Mouse has entered"
F5 キーを押して、アプリケーションを実行します。マウス ポインタをボタンの上に移動します。マウス ポインタが Button1 の上を通過すると、ボタンのテキストが変わります。
前の例では、マウス ポインタが Button1 の上を通過すると、ボタンのテキストが変わりましたが、マウス ポインタが離れてもテキストは元に戻りませんでした。マウスがボタンの上から離れるとテキストが変わるようにするには、MouseEnter イベントのほかに MouseLeave イベントも処理する必要があります。
MouseLeave イベントを処理するには
コード エディタの左側のドロップダウン ボックスで Button1 を選択し、右側のドロップダウン ボックスで MouseLeave をクリックします。
Button1_MouseLeave という名前の新しいイベント ハンドラがコード エディタに表示されます。
Button1_MouseLeave イベント ハンドラに次のコードを追加します。
Button1.Text = "The mouse has left"
F5 キーを押して、アプリケーションを実行します。
これで、マウス ポインタがボタンの上を通過すると、テキストが The mouse has entered に変わりますが、マウスがボタンの上を離れると、テキストが The mouse has left に変わります。
次の手順
このレッスンでは、コード エディタを使用してイベント ハンドラを作成する方法について説明しました。この時点で、順序どおり次のレッスン「ユーザー選択の取得 : チェック ボックスとオプション ボタンを使用する」に進むか、「詳細情報 : イベント ハンドラを共有する」でイベント ハンドラの詳細を参照するかを選択できます。2 番目のオプションを選択する場合は、そのレッスンで使用するために EventHandler プロジェクトを保存します。
参照
参照
Label コントロールの概要 (Windows フォーム)
TextBox コントロールの概要 (Windows フォーム)