【发布时间】:2010-07-05 19:58:52
【问题描述】:
在 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
多次删除处理程序并不能阻止事件触发,因此它似乎不会在其他地方意外添加多次。
有没有办法找出哪些事件处理程序处于活动状态?
【问题讨论】:
-
如果你把代码贴出来,应该更容易帮到你。
-
确实如此,但我真的不知道该发布什么,因为我不知道问题出在哪里,而且程序很大。我只是想知道是否有其他人以前遇到过这个问题,以及是什么为他们解决了这个问题。
-
不过,您至少可以发布您正在谈论的特定功能的代码。
标签: vb.net event-handling virtualmode