イベントを捕捉するイベントが発生した時にこれを捕捉し、それに応じた処理を行うようにするには、イベントハンドラを作成して、これをイベントに追加(接続、登録)する必要があります。 ここでは具体的に、System.Windows.Forms名前空間のButtonコントロール(Button1)のClickイベントに、イベントハンドラ(Button1_Click)を追加する方法を説明します。すでにButton1はフォームに配置されているものとします。 Visual Studioを使用する方法まずは、Visual Studioを使用して行う方法を紹介します。 VB.NET
Visual Studio 2005からは、C#での方法と同じように、プロパティウィンドウでイベントハンドラを作成することもできます。 C#
手動で行う方法次に、Visual Studioを使わずに、手動で行う方法を説明します。 VB.NET
C#の場合
補足:Visual Studio 2005からは、コードエディタに「Button1.Click +=」と記述したところでTabキーを押すことにより、「new EventHandler(Button1_Click);」が自動的に書き足されます。この直後、「Button1_Click」の部分が選択状態になりますが、もしButton1_Clickメソッドが存在しなければ、ここでもう一度Tabキーを押すことにより、Button1_Clickを自動的に作成することができます。この方法でイベントハンドラを作成すれば、いちいちイベントハンドラのシグネチャを調べる必要がなく、簡単です。
実行時にイベントハンドラを追加する最後に、プログラムが実行時にイベントにイベントハンドラを追加する方法を説明します。 VB.NET
C#「手動で行う方法」と同じです。 一つのイベントに複数のイベントハンドラを追加するこれには、「実行時にイベントハンドラを追加する」で紹介した方法を使用します。 例えば次のようにすると、Button1のClickイベントが発生した時に、Button1_ClickとButton1_1_Clickイベントハンドラの両方が呼び出されます。 AddHandler Button1.Click, AddressOf Button1_Click AddHandler Button1.Click, AddressOf Button1_1_Click Button1.Click += new EventHandler(Button1_Click); Button1.Click += new EventHandler(Button1_1_Click); 同じイベントハンドラを複数追加すると、追加した回数だけそのイベントハンドラが呼び出されます。例えば次のようにすると、Button1が一回クリックされると、Button1_Clickが2回呼び出されます。 AddHandler Button1.Click, AddressOf Button1_Click AddHandler Button1.Click, AddressOf Button1_Click Button1.Click += new EventHandler(Button1_Click); Button1.Click += new EventHandler(Button1_Click); 一つのイベントハンドラに複数のイベントを関連付ける例えば、複数のButtonコントロールのClickイベントを一つのイベントハンドラに関連付けることができます。また、デリゲートが同じであれば、複数の別々のイベントを一つのイベントハンドラに関連付けることもできます。 これも、「実行時にイベントハンドラを追加する」で紹介した方法を使用します。 Button1またはButton2がクリックされた時にButton1_Clickが呼び出されるようにするには、次のようにします。 AddHandler Button1.Click, AddressOf Button1_Click AddHandler Button2.Click, AddressOf Button1_Click Button1.Click += new EventHandler(Button1_Click); Button2.Click += new EventHandler(Button1_Click); VB.NETの場合は、「手動で行う方法」で紹介したHandlesを使用して、次のようにすることもできます。 Private Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click End Sub C#と、Visual Studio 2005以降のVB.NETの場合は、「Visual Studioを使用する方法」を使用することもできます。 プロパティウィンドウで「Click」を探し、右側のコンボボックスからイベントハンドラを選択します(イベントハンドラはすでに存在している必要があります)。例えば、Button2のClickイベントにButton1_Clickイベントハンドラを追加するには、このコンボボックスから「Button1_Click」を選択します。 イベントハンドラを削除するイベントに追加されているイベントハンドラを削除するには、VB.NETではRemoveHandlerステートメントを、C#では-=演算子を使用します。 Button1のClickイベントからButton1_Clickイベントハンドラを削除して、Button1をクリックしてもButton1_Clickが呼び出されないようにするには、次のようにします。 RemoveHandler Button1.Click, AddressOf Button1_Click
Button1.Click -= new EventHandler(Button1_Click);
イベントにイベントハンドラが複数追加されている場合は、その数だけ削除しないと、イベントハンドラは呼び出されてしまいます。 イベントからイベントハンドラが完全に削除されている時に上記の方法でイベントハンドラを削除しようとしても、エラーが発生することはありません。 |
|
Copyright(C) DOBON!. All rights reserved.
|