0

有没有更优雅或更有效的方式来编写我的一些代码?

特别是,我的所有表单上都有一个工具条。每个表单都有自己的一组方法,它们本质上是在做同样的事情。有没有办法删除所有方法保存一个,然后将其包含在我的表单特定变量的 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

我可以删除其中一个,然后将另一个移动到一个单独的模块并让它同时为 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关键字将代码实际附加到事件中,尽管在大多数简单情况下,直接调用 sub 会更容易。

于 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 回答