我有一段代码,每次表单打开时我都会添加一个处理程序,我在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
每次我打开表单时,我都会调用sub add_machine来添加dinamically我的机器,因为你可以看到我发送它们ByRef
来简化我的代码我试着把它RemoveHandler
放到我发送ByRef
以避免拥有多个处理程序,但它无效请求帮助
提前致谢。
答案 0 :(得分:2)
两件事,不要通过机器ByRef。您没有返回新对象。有关何时应使用Byval vs ByRef
的更多信息,请阅读此链接其次,在表单加载(或初始化)期间添加处理程序,并在表单关闭时删除它们。这有助于确保您使用对同一对象的引用。