0

私のコードのいくつかを書くためのよりエレガントで効率的な方法はありますか?

特に、すべてのフォームにツールストリップがあります。各フォームには、基本的に同じことを行う独自のメソッドのセットがあります。1つを保存してすべてのメソッドを削除し、それをフォーム固有の変数のswitchステートメントに含める方法はありますか?

私が話していることの例:

'Form 1
Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
    Application.Exit()
End Sub

'Form 2
Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
    Application.Exit()
End Sub

それらの1つを削除し、もう1つを別のモジュールに移動して、form1とform2の両方で機能させることはできますか?

    Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles [myWholeDangProject].ExitToolStripMenuItem.Click
    Application.Exit()
End Sub
4

2 に答える 2

0

WithEventsイベントを共有モジュールに送信する方法はありません。ただし、おっしゃるように、共有クラスまたはVB.NETモジュールは、両方の制御イベントハンドラーから呼び出すことができるサブルーチンを保持できます。

共有イベントハンドラーを作成することもできますが、 AddHandlerキーワードを使用して実際にコードをイベントにアタッチする必要がありますが、ほとんどの場合、サブへの直接呼び出しの方が簡単です。

于 2012-10-31T18:50:56.483 に答える
0

はい、AddhandlerとAddressOfを使用して、フォームの初期化時にイベントをフックアップします。

AddHandler ExitToolStripMenuItem.Click, AddressOf MyModule.ExitHandler

Public Sub ExitHandler(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    Application.Exit()
End Sub
于 2012-10-31T18:55:19.333 に答える