有一个非常讨厌的时间为一组使用相当基本的继承的UserControl开发代码。基本上,它们是三个不同的详细视图,它们都从单个基类继承而来,后者又实现了单个接口。
接口IBaseDetailView
Class BaseDetailView:实现IBaseDetailView
类DetailView1:继承BaseDetailView 类DetailView2:继承BaseDetailView 类DetailView3:继承BaseDetailView
然后我有一个复合UserControl,它在TabControl的选项卡上添加了单个DetailViews 1-3。
非常简单的东西。一切都编译好,所有UserControls都可以在工具箱中使用,可以拖放到任何表单上。但是有一个问题......
他们最初显示什么不是,但是在用臭名昭着的“对象实例未设置为引用”错误编译表单错误之后。
现在,有关更多信息...如果我在每个DetailView具体/派生类中注释掉Form_Load事件,则此错误消失,并且可以在设计模式下查看表单。 Form_Load事件具有对sql server的ado.net调用,这似乎会触发错误。
使用Form_Load事件,我在编译时不会收到任何错误,我可以在调试或发布模式下运行应用程序而不会出现问题。我只是无法使用DesignMode中的UserControls查看任何表单。
我添加了If Me.DesignMode然后返回到Form_Load事件,但它没有用。我认为VS2008实际上是在尝试运行UserControls中的代码......我用谷歌搜索了这个但我还没有找到解决方案。任何帮助深表感谢!
答案 0 :(得分:0)
在Form_Load方法的属性/字段周围进行空检查。我们有类似的问题,因为设计师似乎在设计时使用FormLoad,而不是你期望的那样。
还有一个可以使用的DesignMode属性。
我希望这会有所帮助。