在VB.NET函数的开头,我删除了一个事件处理程序,并在函数的末尾再次添加它,因为该函数的代码会触发这些事件,并且我不希望它们在该函数的持续时间内触发。这通常起作用,但是我遇到了一些事件仍然被调用的情况,尽管我已经删除了它。有时在功能开始时删除它两次会修复它,但有时无论我删除它多少次,它仍然会触发。任何想法可能会导致这种情况?事件处理程序不会自行删除?
编辑
该代码是在具有虚拟模式的datagridview表单。我想运行一些将触发DataGridView的CellValueNeeded事件的操作,而不会触发该事件(因为它会干扰)。
Public Sub DoEventRaisingStuff()
RemoveHandler grid.CellValueNeeded, AddressOf grid_CellValueNeeded
'Do things that would trigger CellValueNeeded
AddHandler grid.CellValueNeeded, AddressOf grid_CellValueNeeded
End Sub
多次移除处理程序并不能防止事件被触发,所以它似乎不会在别的地方偶然多次添加。
有没有办法找出哪些事件处理程序是活动的?
如果您发布代码,应该会更容易帮助您。 – 2010-07-05 20:14:18
这是真的,但我不知道要发布什么,因为我不知道问题出在哪里,程序非常大。我更想知道是否有其他人遇到过这个问题,以及为他们解决了什么问题。 – davidscolgan 2010-07-05 20:23:45
尽管如此,您至少可以发布您正在讨论的特定功能的代码。 – 2010-07-06 03:24:23