在VB.NET中整合冗余代码

时间:2012-10-31 18:16:07

标签: vb.net refactoring

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

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

2 个答案:

答案 0 :(得分:0)

无法将WithEvents事件定向到共享模块。但是,就像你说的那样,共享类或VB.NET模块可以保存可以从两个控制事件处理程序调用的子例程。

可以创建一个共享事件处理程序,但是你必须使用AddHandler关键字来实际将代码附加到事件中,尽管在大多数情况下只是直接调用sub会更容易。

答案 1 :(得分: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