我担心我的代码有明显的错误,但是我遇到了在创建和显示表单时Form.Load事件没有触发的情况.
表单不是子类(因为我在一些搜索中看到了一些问题),并且当我逐步调试调试器中的代码时,我没有收到任何错误.
我在IDE创建的表单加载函数(它具有Handles MyBase.Load签名后缀)上设置了断点,但是从未到达断点并且表单确实显示并正常工作.
表单在构造函数中传递三个参数,但在完成任何其他操作之前调用IntializeComponent()函数.
码:
Public Sub New(ByVal argA As Object,ByVal argB As Object,ByVal mode As FormMode) ' This call is required by the Windows Form Designer. InitializeComponent() ' Other code here,' No errors generated ' End Sub
表单加载函数如下所示(但实际上从未执行过,因为事件未被触发).
码:
Private Sub frmInstrumentEditor_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load If Not argA Is Nothing Then ' argA set in constructor ' Operations using argA End If End Sub
我可能会添加一些数据绑定与一些控件和argA对象,但如果这产生错误我认为我会看到这个(我已将CLR Execpetions设置设置为调试器中的Thown;例外窗口)
有什么想法可能会发生吗?
我刚才遇到了类似的问题(它是在Shown事件中,而不是Load,但根本原因是相同的).原因隐藏在其中一个祖先的深处 – 抛出了一个未处理的NullReferenceException,这个异常以某种方式被“静音”.
经过F11的大量调试后我发现了它.
但是……在写这个答案时我发现了这个post on SO
只需在Main()方法中添加Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException)即可.
如果您使用的是64位计算机,它会为您提供解决方案(在我的情况下也适用).