2012-10-31 42 views
0

有没有更优雅或有效的方式来编写我的一些代码?合并VB.NET中的冗余代码

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

我可以删除其中的一个,并移动到其他单独的模块,并将它充当两个Form 1和Form?

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

回答

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 
+0

谢谢!在看到我的选项后,我不确定这是否是我想要采用的路线。 – Meowbits

0

没有办法将WithEvents事件指向共享模块。就像你说的那样,一个共享类或VB.NET模块可以容纳可以从两个控制事件处理程序中调用的子例程。

可以做一个共享的事件处理程序,但你必须使用AddHandler关键字实际的代码连接到事件虽然在大多数情况下,简单的只是一个子直通话会更容易些。