从另一个表单覆盖按钮单击事件

时间:2014-06-18 15:55:06

标签: vb.net onclick subroutine

有没有办法从父窗体覆盖窗体按钮单击事件?

例如,这就是我发生的事情......

Dim newForm As New FormB
newForm.someproperty1 = True
newForm.someprpoerty2 = False

newForm.Show(Me)

我需要知道关闭newForm时点击了什么按钮。我通常会使用'ShowDialog',但我不能,因为newForm需要打开一个不能作为对话框打开的不同形式...长话短说,没有完全重写我们的整个软件,我不能使用ShowDialog。

无论如何,我是否可以从其他表单添加按钮点击事件?有点像...

Dim newForm As New FormB
newForm.btn1.click = SomeNewFunctionOrSubroutine()
newForm.btn2.click = SomeOtherFunctionOrSub()

newForm.Show(Me)

我一直在关注事件和事件处理程序,但它们并没有太多意义......

任何提示?

1 个答案:

答案 0 :(得分:3)

您可以在FormB中的按钮上调用AddHandler(前提是其Modifier属性为Public)

' This code is inside your Parent form
AddHandler newForm.btn1.click, AddressOf Me.SomeOtherFunctionOrSub


' This code is inside your Parent form
Protected Sub SomeOtherFunctionOrSub(sender as Object, e As EventArgs)
    ......
End Sub

添加处理程序是拦截不同表单上的操作的常见做法(例如,您可能还需要截取Form.Closing事件,以防您希望在任何时候只打开一个newForm实例。 )
另一种方法(更复杂)是订阅自定义事件,需要FormB代码的配合。但在这种情况下,似乎没有必要。