雑記
 

Windows フォーム アプリでイベントハンドラーを作成する方法

2022/9/11

この記事が対象とする製品・バージョン

Visual Studio 2022 Visual Studio 2022 対象です。
VS2019 Visual Studio 2019 対象です。
VS2017 Visual Studio 2017 対象ですが、画面や操作方法は少し違うかもしれません。
VS2015 Visual Studio 2015 対象ですが、画面や操作方法は少し違うかもしれません。
VS2013 Visual Studio 2013 対象ですが、画面や操作方法は少し違うかもしれません。
VS2012 Visual Studio 2012 対象ですが、画面や操作方法は少し違うかもしれません。
VS2010 Visual Studio 2010 対象ですが、画面や操作方法は少し違うかもしれません。
VS2008 Visual Studio 2008 対象ですが、画面や操作方法は少し違うかもしれません。
VS2005 Visual Studio 2005 対象ですが、画面や操作方法は少し違うかもしれません。
VS.NET 2003 Visual Studio 2003 対象ですが、画面や操作方法は少し違うかもしれません。
VS.NET 2002 Visual Studio (2002) 対象ですが、画面や操作方法は少し違うかもしれません。
  Visual Studio Code × 対象外です。

 

目次

 

1.新しくイベントハンドラーを生成する方法

VBでもC#でも同じ方法でできます。

対象のイベントをダブルクリックする際は、イベントの名前が表示されているところをダブルクリックするのがやりやすいです。(右側の白い方でもOK。)

 

ダブルクリックするとイベントハンドラーのプログラムが自動生成されコードエディターに画面が切り替わります。

C#の場合、次のようなプログラムです。

 

 

2.イベントハンドラーを削除する

イベントハンドラーを削除するには、プロパティウィンドウのイベント一覧で対象のイベントを右クリックして「リセット」を押します。

 

 

3.イベントハンドラーの名前を変更する

イベントハンドラーの名前を変更するには、コードエディターでイベントハンドラーの名前を右クリックして「名前の変更」→新しい名前の入力→「適用」クリック をします。

 

 

4.既存のメソッドをイベントハンドラーとして登録する

既存のメソッドをイベントハンドラーとして登録するには、プロパティウィンドウのイベント一覧で対象のイベントを選択し、右側のボタンをクリックします。設定可能なメソッドの一覧が表示されるので選択します。

設定可能なメソッドは、引数で判断されます。

 

 

5.他のコントロールのイベントハンドラーをイベントハンドラーとして登録する

イベントとイベントハンドラーは1対1ではありません。

他のコントロールのイベントハンドラーをイベントハンドラーとして登録するには、プロパティウィンドウのイベント一覧で対象のイベントを選択し、右側のボタンをクリックします。設定可能なイベントハンドラーの一覧が表示されるので選択します。

設定可能なイベントハンドラーは、引数で判断されます。

 

6.プログラムで行う

6-1.イベントハンドラーを自動生成する

C#の場合、button1.Click のようにコントロールとイベントを入力して += に続けてTAB を入力することで自動的にメソッドが生成されイベントハンドラーになります。

 

6-2.動的にイベントハンドラーを結びつける

次のようにして既存の MyClickメソッドを Clickイベントのイベントハンドラーに結びつけられます。(他のイベントもOK)

C#の場合


button1.Click += MyClick;

VBの場合


AddHandler Button1.Click, AddressOf MyClick

 

 

MyClickメソッドはClickイベントに適合する引数で定義しておく必要があります。

C#の場合

private void MyClick(object? sender, EventArgs e)
{
    MessageBox.Show("MyClick");
}

メモ:object? のように ? がないと、イベントハンドラーを結びつけるところで緑の波線で警告されます。

 

VBの場合

Private Sub MyClick(sender As Object, e As EventArgs)
    MsgBox("MyClick")
End Sub

 

6-3.静的にイベントハンドラーを結びつける

VBでは、メソッドの定義で Handles を使うことで メソッドとイベントを結びつけられます。

Private Sub MyClick(sender As Object, e As EventArgs) Handles Button1.Click
    MsgBox("MyClick")
End Sub

 

7.他の方法

ここで紹介した方法は一例です。他にもいくつかやり方があると思います。

たとえば、コントロールをダブルクリックするだけで、簡単に生成できるイベントハンドラーもあります。(ButtonのClickイベントハンドラー、FormのLoadイベントハンドラーなど)