У меня есть часть кода, где я добавляю обработчик каждый раз, когда форма открыта, я работаю в визуальном базовом, но при первом входе в форму все работает нормально, но во второй раз у меня есть 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
Everytime я открываю форму я называю суб add_machine добавить динамически мои машины, как вы можете видеть, что я отправить их ByRef
упростить мой код, который я пытался поставить эту RemoveHandler
, так я посылаю ByRef
, чтобы избежать более одного обработчика, но это не работает, пожалуйста, помогите
Спасибо авансовый.
Передано ли 'machine' этой функции, как в предыдущем вызове? Если нет, это не сработает. Вам нужно отказаться от подписки на предыдущий экземпляр 'machine'. –
Я думаю, что это одна и та же машина, потому что у меня есть кнопка, которая вызывает эту форму, моя основная форма всегда открыта, и именно там я храню машины, как бы я знал, если это не тот же экземпляр. – ocespedes
Вы отметили это как VBA, но, возможно, вы имеете в виду Visual Basic? Вы взглянули на: http://msdn.microsoft.com/en-us/library/6yyk8z93(v=vs.90).aspx –