次の方法で共有


コントロール イベントを処理する方法

コントロール (およびフォーム) のイベントは、通常、Visual Studio Visual Designer for Windows フォームを使用して設定されます。 Visual Designer を使用してイベントを設定することは、デザイン時のイベントの処理と呼ばれます。 実行時のイベントの処理と呼ばれる、コード内でイベントを動的に処理することもできます。 実行時に作成されたイベントを使用すると、アプリの現在の動作に基づいてイベント ハンドラーを動的に接続できます。

デザイン時にイベントを処理する

Visual Studio で、Visual Designer を使用してコントロール イベントのハンドラーを管理します。 Visual Designer によってハンドラー コードが生成され、イベントに追加されます。

ハンドラーを設定する

[プロパティ] ウィンドウを使用して、イベントのハンドラーを追加または設定します。

  1. 変更するコントロールを含むフォームのビジュアル デザイナーを開きます。

  2. コントロールを選択します。

  3. イベント ボタン () を押して、[プロパティ] ウィンドウ モードを [イベント] に変更します。

  4. ハンドラーを追加するイベント (Click イベントなど) を見つけます。

    イベント モードが有効でクリック イベントが表示された Visual Studio のプロパティ ウィンドウ。

  5. 次のいずれかを行ってください:

    • イベントをダブルクリックして新しいハンドラーを生成します。ハンドラーが割り当てられていない場合は空白になります。 空白でない場合、このアクションはフォームのコードを開き、既存のハンドラーに移動します。

    • 選択ボックス ( ) を使用して、既存のハンドラーを選択します。

      選択ボックスには、イベント ハンドラーの互換性のあるメソッド シグネチャを持つすべてのメソッドが一覧表示されます。

ハンドラーをクリアする

イベント ハンドラーを削除するには、フォームの分離コード ファイル内にあるハンドラー コードを削除するだけではなく、デザイナーによって引き続き参照されます。 [プロパティ] ウィンドウを使用して、イベントのハンドラーを削除します。

  1. 変更するコントロールを含むフォームのビジュアル デザイナーを開きます。

  2. コントロールを選択します。

  3. イベント ボタン () を押して、[プロパティ] ウィンドウ モードを [イベント] に変更します。

  4. 削除するハンドラーを含むイベント (Click イベントなど) を見つけます。

    イベント モードが有効でクリック イベントが表示された Visual Studio のプロパティ ウィンドウ。

  5. イベントを右クリックし、[リセット] を選択 します

実行時にイベントを処理する

通常は、デザイン時に 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 を使用してフォームに対して次の操作を行います。

  1. フォームに新しいボタンを追加し、Button1 という名前を 付けます
  2. イベント ボタン () を押して、[プロパティ] ウィンドウ モードを [イベント] に変更します。
  3. Click イベントをダブルクリックしてハンドラーを生成します。 このアクションにより、コード ウィンドウが開き、空の Button1_Click メソッドが生成されます。
  4. メソッド コードを上記のコードに置き換えます。

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

こちらも参照ください