0

为一组使用相当基本的继承的用户控件开发一些代码真的很烦人。基本上,它们是三个不同的详细视图,它们都继承自一个基类,而基类又实现了一个接口。

接口 IBaseDetailView

类 BaseDetailView :实现 IBaseDetailView

类 DetailView1:继承 BaseDetailView 类 DetailView2:继承 BaseDetailView 类 DetailView3:继承 BaseDetailView

然后我有一个复合用户控件,它将单个 DetailViews 1-3 添加到 TabControl 的选项卡上。

很简单的东西。一切都编译得很好,所有的用户控件都在工具箱中可用,并且可以拖放到任何表单上。但是有一个问题...

它们最初显示和什么不显示,但是在编译表单错误后出现臭名昭著的“对象实例未设置为引用”错误。

现在,有关更多信息...如果我在每个 DetailView 具体/派生类中注释掉 Form_Load 事件,此错误就会消失,并且可以在设计模式下查看表单。Form_Load 事件对似乎触发错误的 sql 服务器进行了 ado.net 调用。

使用 Form_Load 事件,我在编译时不会收到任何错误,并且在调试或发布模式下我可以毫无问题地运行应用程序。我只是无法在 DesignMode 中使用 UserControls 查看任何表单。

我添加了 If Me.DesignMode Then Return to the Form_Load 事件,但它不起作用。我认为 VS2008 实际上是在尝试在 UserControls 中运行代码......我用谷歌搜索了这个,但我还没有找到解决方案。任何帮助深表感谢!

4

1 回答 1

0

在 Form_Load 方法中对属性/字段进行空检查。我们遇到了类似的问题,因为设计师似乎在设计时使用了 FormLoad,而不是您所期望的。

您还可以使用一个 DesignMode 属性。

我希望这有帮助。

于 2009-12-31T19:25:05.103 回答