次の方法で共有


コントロール イベントを処理する方法 (Windows フォーム .NET)

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

イベントの処理 - デザイナー

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

ハンドラーを設定する

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

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

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

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

  4. ハンドラーを追加するイベント (たとえば、Click イベント) を見つけます。

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

  5. 次のいずれかの操作を行います。

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

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

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

ハンドラーをクリアする

イベント ハンドラーを削除するには、フォームのコードビハインド ファイル内にあるハンドラー コードを削除するだけでは不十分です。それはまだイベントによって参照されています。 プロパティ ペインを使用して、イベントのハンドラーを削除します。

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

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

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

  4. 削除するハンドラーを含むイベント (たとえば、Click イベント) を見つけます。

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

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

イベントの処理 - コード

通常は、デザイン時に Visual Designer を使用してコントロールにイベント ハンドラーを追加します。 ただし、実行時にコントロールを作成できます。そのためには、コードにイベント ハンドラーを追加する必要があります。 コードにハンドラーを追加すると、同じイベントに複数のハンドラーを追加することもできます。

ハンドラーを追加する

次の例は、コントロールを作成し、イベント ハンドラーを追加する方法を示しています。 このコントロールは、Button.Click イベント ハンドラーに別のボタンで作成されます。 ボタン1 が押されると。 コードは新しいボタンを移動してサイズを設定します。 新しいボタンの 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

関連項目