我正在重构我的代码以实现多数据库工作。我使用System.Data.Common类和factory为当前选定的数据库引擎创建Exact对象。 Designed中的一些连接定义如下所示:
private System.Data.Common.DbConnection cn;
和分配是:
private void InitializeComponent()
{
...
this.cn = SqlFactory.CreateConnection();
...
}
和SqlFactory代码如下所示:
public DbConnection getConnection()
{
return (TSqlConection)Activator.CreateInstance(typeof(TSqlConection));
}
它在运行时可以正常工作,但是当我试图在VS Designer中打开任何表单时,我会遇到如下错误:
The variable 'cn' is either undeclared or was never assigned.
Designer无法显示表单进行编辑。
我该如何解决?
答案 0 :(得分:2)
一般情况下,不应手动触摸InitializeComponent
方法,一旦打开,表单设计器就会覆盖其内容。 Visual Studio通常会在* .Designer.cs中添加一个自动生成的注释。另外,我建议不要尝试在默认构造函数(没有参数的构造函数)中创建任何数据库连接,因为当您尝试在Designer中打开表单时,Visual Studio会调用它。
所以,你的选择是
Load
事件。InitConnections
的其他方法,此方法将执行必要的初始化。您可以在代码中的某个位置创建表单后立即调用它。答案 1 :(得分:1)
从Designer.cs中删除this.cn = SqlFactory.CreateConnection();
以及cn
的所有内容。
在InitializeComponent();
之后添加此部分。
现在您可以编辑表单,不会出现任何错误。