0

A と B の 2 つのオブジェクトがあり、両方のオブジェクトに Hi という同じメソッドがあります。したがって、A.hi は「こんにちは、私は A です」というメッセージボックスを表示し、B.hi は「こんにちは、私は B です」というメッセージを表示します。どちらにも、このメソッドをアクティブにするボタンがあります。

これらの両方のイベントを同じハンドラーで処理するにはどうすればよいですか?

例えば、別々にやったら、Aにこれを持っていきます。

Private Sub btnHi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHiClassA.Click
   A.hi
End Sub

同じハンドラーで両方のイベントを処理したいのですが、このロジックで面倒なバージョンを実行できました。

Private Sub btnHi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHiClassA.Click, btnHiClassB.Click 
   if sender is btnHiClassA then
      A.hi
   elseif sender is btnHiClassB then
      B.hi
   end if
End Sub

理想的には、次のようになります。

Private Sub btnHi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHiClassA.Click, btnHiClassB.Click
   'theObject = sender
   'theObject.hi
End Sub

どうすればいいですか?

4

2 に答える 2

1

メソッド Hi を使用してインターフェイス IHiSender を定義します。

すべてのクラスに IHiSender を実装します。

EventArgs のサブクラスを HiSenderEventArgs として定義し、追加のプロパティ WhoAmI を IHiSender 型として定義します。

于 2013-04-07T05:45:49.030 に答える