我有一段代码,每次打开表单时我都会添加一个处理程序,我使用的是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 的更多信息
其次,在表单加载(或初始化)期间添加处理程序,并在表单关闭时删除它们。这将有助于确保您使用对同一对象的引用。