我有一个不会关闭的WinForms表单.在OnFormClosing中,e.Cancel设置为true.我猜我的应用程序中的某些对象已绑定到Closing或FormClosing事件,并阻止关闭.为了找到答案,我想确定哪些代表与其中一个事件绑定.
有没有办法确定绑定到事件的处理程序列表?理想情况下,我会通过Visual Studio调试器执行此操作,但可以在应用程序中编写代码以在必要时查找处理程序.理解一个事件就像一个隐藏的私有字段,我已经通过调试器导航到我的表单的"Windows.Forms.Form"祖先的"非公共字段",但无济于事.
我写了一些代码来处理事件,如下所示:
AddHandler myObject.myEvent, AddressOf myFunction
Run Code Online (Sandbox Code Playgroud)
似乎一切都在工作,但是当我运行调试器时,我发现通常myFunction每次都会运行几次myObject.myEvent.我发现我已经允许代码添加事件处理程序多次运行,从而导致此行为.
有没有办法可以做这样的事情?
If myObject.myEvent is not handled Then
AddHandler myObject.myEvent, AddressOf myFunction
End If
Run Code Online (Sandbox Code Playgroud)