Antoine.st Event From Visual Basic Component

Event from Visual Basic .NET Component.

C# 側で、Visual Basic .NET コンポーネントのイベントをどうやって受け取るか、という話。Visual Basic .NET のコンポーネント(クラス) は、こんな作りになってます。


  Public Class Class1
      Public Event Hoge()

      Public Sub Test()
        RaiseEvent Hoge()
      End Sub
  End Class

で、これを C#から使うときは、


  this.c = new VBRaiseEventTest.Class1();
  this.c.Hoge += new Class1.HogeEventHandler(this.Hoge);

  private void Hoge()
  {
    MessageBox.Show("Hoge!");
  }

こんな感じで。要するに、イベントと一緒です。Visual Basic .NET のクラスで イベントを作成すると、「イベント名」 + 「EventHandler」という名前の Delegate が作成されます。C# では、メソッドと Delegate を関連付けることにより、 イベントのハンドリングができるようになります。