Vb.net 如何捕捉运行时对象上的事件

Vb.net 如何捕捉运行时对象上的事件,vb.net,Vb.net,我正在创建一个在运行时带有几个按钮和一个组合框的表单 dim f as new form (废话) 然后设置按钮acceptDescription和rejectDescription… 然后设置组合框descriptionCombo 然后 AddHandler acceptDescription.Click, AddressOf handleAcceptedDescription AddHandler rejectDescription.Click, AddressOf handleReje

我正在创建一个在运行时带有几个按钮和一个组合框的表单

dim f as new form 
(废话)

然后设置按钮acceptDescription和rejectDescription…
然后设置组合框descriptionCombo

然后

AddHandler acceptDescription.Click, AddressOf handleAcceptedDescription
AddHandler rejectDescription.Click, AddressOf handleRejectedDescription
然后我有这两种方法来捕捉点击事件。。。但不知道如何引用其他运行时生成的控件。(组合框如果接受,表格如果拒绝)


为什么你不能引用它?只需将其另存为模块/表单级别变量,即可进行设置。

如果生成表单的代码位于主表单中,则在主表单类的类级别声明表单变量,以便可以从事件处理程序访问它。组合框和文本字段也是如此-您需要确保在处理程序范围之外声明变量,以便在处理程序中引用它们。

为了避免全局定义,最好的答案是

Private Sub handleRejectedDescription(ByVal sender As System.Object, ByVal e As System.EventArgs)
    'sender is a button in this case.
    'get the button
    dim b as new button
    b = ctype(sender,button)
    'now get the button's parent form
    dim f as new form
    f = ctype(b.parent, form)
    'now close the form
    f.close()
End Sub

这应该行得通——但我认为这必须是可能的,而不需要声明更多的全局变量。谢谢。如果表单每次都以相同的方式生成,您可以考虑用组合框和文本框公开的方式编写一个新的表单子类。
Private Sub handleRejectedDescription(ByVal sender As System.Object, ByVal e As System.EventArgs)
    'sender is a button in this case.
    'get the button
    dim b as new button
    b = ctype(sender,button)
    'now get the button's parent form
    dim f as new form
    f = ctype(b.parent, form)
    'now close the form
    f.close()
End Sub