コントロール (およびフォーム) のイベントは、通常、Visual Studio Visual Designer for Windows フォームを使用して設定されます。 Visual Designer を使用してイベントを設定することは、デザイン時のイベントの処理と呼ばれます。 実行時のイベントの処理と呼ばれる、コード内でイベントを動的に処理することもできます。 実行時に作成されたイベントを使用すると、アプリの現在の動作に基づいてイベント ハンドラーを動的に接続できます。
デザイン時にイベントを処理する
Visual Studio で、Visual Designer を使用してコントロール イベントのハンドラーを管理します。 Visual Designer によってハンドラー コードが生成され、イベントに追加されます。
ハンドラーを設定する
[プロパティ] ウィンドウを使用して、イベントのハンドラーを追加または設定します。
変更するコントロールを含むフォームのビジュアル デザイナーを開きます。
コントロールを選択します。
イベント ボタン (
) を押して、[プロパティ] ウィンドウ モードを [イベント] に変更します。
ハンドラーを追加するイベント (Click イベントなど) を見つけます。
次のいずれかを行ってください:
イベントをダブルクリックして新しいハンドラーを生成します。ハンドラーが割り当てられていない場合は空白になります。 空白でない場合、このアクションはフォームのコードを開き、既存のハンドラーに移動します。
選択ボックス (
) を使用して、既存のハンドラーを選択します。
選択ボックスには、イベント ハンドラーの互換性のあるメソッド シグネチャを持つすべてのメソッドが一覧表示されます。
ハンドラーをクリアする
イベント ハンドラーを削除するには、フォームの分離コード ファイル内にあるハンドラー コードを削除するだけではなく、デザイナーによって引き続き参照されます。 [プロパティ] ウィンドウを使用して、イベントのハンドラーを削除します。
変更するコントロールを含むフォームのビジュアル デザイナーを開きます。
コントロールを選択します。
イベント ボタン (
) を押して、[プロパティ] ウィンドウ モードを [イベント] に変更します。
削除するハンドラーを含むイベント (Click イベントなど) を見つけます。
イベントを右クリックし、[リセット] を選択 します。
実行時にイベントを処理する
通常は、デザイン時に Visual Designer を使用してコントロールにイベント ハンドラーを追加します。 ただし、実行時にコントロールを作成できます。そのためには、コードにイベント ハンドラーを追加する必要があります。 コードにハンドラーを追加すると、同じイベントに複数のハンドラーを追加することもできます。
ハンドラーを追加する
次の例は、コントロールを作成し、イベント ハンドラーを追加する方法を示しています。 このコントロールは、 Button.Click
イベント ハンドラーに別のボタンで作成されます。
Button1 が押されたとき。 コードは新しいボタンを移動してサイズを設定します。 新しいボタンの Click
イベントは、 MyNewButton_Click
メソッドによって処理されます。 新しいボタンを表示するには、フォームの Controls
コレクションに追加されます。
Button1.Click
イベントのハンドラーを削除するコードもあります。これについては、「ハンドラーの削除」セクションで説明します。
private void button1_Click(object sender, EventArgs e)
{
// Create and add the button
Button myNewButton = new()
{
Location = new Point(10, 10),
Size = new Size(120, 25),
Text = "Do work"
};
// Handle the Click event for the new button
myNewButton.Click += MyNewButton_Click;
this.Controls.Add(myNewButton);
// Remove this button handler so the user cannot do this twice
button1.Click -= button1_Click;
}
private void MyNewButton_Click(object sender, EventArgs e)
{
}
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'Create and add the button
Dim myNewButton As New Button() With {.Location = New Point(10, 10),
.Size = New Size(120, 25),
.Text = "Do work"}
'Handle the Click event for the new button
AddHandler myNewButton.Click, AddressOf MyNewButton_Click
Me.Controls.Add(myNewButton)
'Remove this button handler so the user cannot do this twice
RemoveHandler Button1.Click, AddressOf Button1_Click
End Sub
Private Sub MyNewButton_Click(sender As Object, e As EventArgs)
End Sub
このコードを実行するには、Visual Studio Visual Designer を使用してフォームに対して次の操作を行います。
- フォームに新しいボタンを追加し、Button1 という名前を 付けます。
- イベント ボタン (
) を押して、[プロパティ] ウィンドウ モードを [イベント] に変更します。
-
Click イベントをダブルクリックしてハンドラーを生成します。 このアクションにより、コード ウィンドウが開き、空の
Button1_Click
メソッドが生成されます。 - メソッド コードを上記のコードに置き換えます。
C# イベントの詳細については、「イベント (C#)」を参照してください。Visual Basic イベントの詳細については、「イベント (Visual Basic)」を参照してください。
ハンドラーを削除する
ハンドラー の追加セクションでは、 ハンドラーの追加を示すためにいくつかのコードを使用しました。 そのコードには、ハンドラーを削除する呼び出しも含まれていました。
button1.Click -= button1_Click;
RemoveHandler Button1.Click, AddressOf Button1_Click
この構文を使用すると、任意のイベントから任意のイベント ハンドラーを削除できます。
C# イベントの詳細については、「イベント (C#)」を参照してください。Visual Basic イベントの詳細については、「イベント (Visual Basic)」を参照してください。
同じハンドラーで複数のイベントを使用する方法
Visual Studio Visual Designer の [プロパティ ] ウィンドウでは、別のイベントで既に使用されている同じハンドラーを選択できます。 「 ハンドラーの設定 」セクションの指示に従って、新しいハンドラーを作成するのではなく、既存のハンドラーを選択します。
C# では、ハンドラーはフォームのデザイナー コード内のコントロールのイベントにアタッチされ、Visual Designer によって変更されます。 C# イベントの詳細については、「イベント (C#)」を参照してください。
Visual Basic
Visual Basic では、ハンドラーはフォームの分離コード ファイル内のコントロールのイベントにアタッチされ、そこでイベント ハンドラー コードが宣言されます。 複数の Handles
キーワードをイベント ハンドラー コードに追加して、複数のイベントで使用できます。 ビジュアル デザイナーによって Handles
キーワードが生成され、イベント ハンドラーに追加されます。 ただし、ハンドラーメソッドのシグネチャがイベントと一致する限り、任意のコントロールのイベントやイベントハンドラーに対して、これを簡単に行うことができます。 Visual Basic イベントの詳細については、「イベント (Visual Basic)」を参照してください。
このコードでは、同じメソッドを 2 つの異なる Button.Click
イベントのハンドラーとして使用する方法を示します。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click
'Do some work to handle the events
End Sub
こちらも参照ください
.NET Desktop feedback