我的事件处理程序从未被调用,因为原始事件是在另一个事件处理程序中引发

时间:2011-04-18 19:25:27

标签: vb.net winforms events

虽然在子类中引发了事件,但我的父类中的事件处理程序永远不会被调用。

守则:

Public Class childForm

    Public Event checkboxchangedEvent(ByVal checkbox1 As Boolean, ByVal checkbox2 As Boolean)
    Private Sub checkboxchanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged
        RaiseEvent checkboxchangedEvent(CheckBox1.Checked, CheckBox2.Checked)
        End Sub
End Class

Public Class ParentForm

Friend WithEvents cf As childform = New childform

 Private Sub cf_checkboxchanged(ByVal checkbox1 As Boolean, ByVal checkbox2 As Boolean) Handles cf.checkboxchangedEvent

        My.Settings.checkbox1 = checkbox1

        My.Settings.checkbox2 = checkbox2
    End Sub

End Class

2 个答案:

答案 0 :(得分:0)

您可以像这样尝试设置事件处理程序的替代方法

Public Sub ShowChildForm()
     Dim frm as New childform
     AddHandler frm.checkboxchangedevent, AddressOf cf_checkboxchanged
     frm.ShowDialog()
     RemoveHandler frm.checkboxchangedevent, AddressOf cf_checkboxchanged
End Sub

答案 1 :(得分:0)

我认为你的问题是时机。尝试显式创建表单并在ParentForm的{​​{1}}事件处理程序中添加处理程序。 (这些都是从内存中输入的,未经测试,因此Load事件的事件名称/签名可能不正确。)

Load