C#WinForms,这个奇怪的错误是什么?

时间:2011-01-20 08:40:26

标签: c# .net winforms .net-3.5

我是C#WinForms的新手。我创建了一个继承Form类的类(EnhancedForm)。在EnhanceForm中,我已经放了一些常用的函数(比如验证,常用的对象,比如DataTable和字符串变量等,这样我就不必在表格中反复编码了)我希望在所有表格中使用,然后我的所有表格表单继承了这个(EnhancedForm)。

在DAL(一个单独的类库)中,我有一个类CommonDB类,它具有与DB相关的常用函数。对于数据库通信,我正在以各种形式制作CommonDB的对象。我想将CommonDB放在EnhancedForm中,这样我就不必在所有类中创建它的对象了。

这是我无法理解的事情。应用运行良好。但是,如果我尝试在设计视图中打开一个表单,则会出错。 “对象引用未设置为对象的实例。”我无法在设计模式下查看表单。如果我从EnhancedForm中删除CommonDb对象并将其放在单独的表单中,它可以正常工作并允许查看表单。

如果我编译并运行此错误,则不会出现。请指导和帮助我。

由于

2 个答案:

答案 0 :(得分:4)

您在EnhancedForm中有代码,它采用CommonDb对象。在运行时,您创建它(可能在Form_Loaded中)但设计时它不存在。

首先,访问CommonDb的所有代码都应检查null,和/或this.DesignMode

答案 1 :(得分:1)

好像你在基础表单的构造函数中启动了你的CommonDB类。 Visual Studio使用Reflection在设计视图中显示表单,这会导致调用表单的构造函数。您可以尝试重建项目,看看是否可以在设计视图中看到表单,但我认为它不会起作用。