无法删除事件处理程序,多次添加



我有一段代码,每次打开表单时我都会添加一个处理程序,我使用的是visual basic,但第一次输入表单时一切都很好,但第二次我有2个处理程序。如果输入第三个,我有3个处理程序等等。我不知道为什么会发生这种情况。

以下是我迄今为止所尝试的。

我已经将我的所有机器存储在另一个类中,但我将发送到myForm以显示它们,但为了添加它们,我使用以下代码:

    Private Sub add_machine(ByRef machine As Machine)
    RemoveHandler machine.imgBox.Click, AddressOf Me.imgBox_Click
    AddHandler machine.imgBox.Click, AddressOf Me.imgBox_Click
    Me.Controls.Add(machine.get_imgMachine)
    Private Sub imgBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)        
    'Some code
    End Sub

每次我打开表单时,我都会调用子add_machine来日常添加我的机器,正如你所看到的,我向它们发送ByRef以简化我的代码,我试图将RemoveHandler放入,因为我发送ByRef是为了避免有多个处理程序,但它不起作用,请帮助

提前谢谢。

两件事,不要通过机器ByRef。您没有返回新对象。请阅读此链接,了解有关何时应使用Byval与ByRef 的更多信息

其次,在表单加载(或初始化)期间添加处理程序,并在表单关闭时删除它们。这将有助于确保您使用对同一对象的引用。

相关内容

  • 没有找到相关文章

最新更新