UserControl中的ConfigurationManager连接字符串为null

我有一个应用程序通过数据层获取数据到表单,使用这样的东西:

public DataTable get(String query, ArrayList parameters = null) { using (iDB2Connection cn = new iDB2Connection(ConfigurationManager.ConnectionStrings["iseries"].ToString())) { // get the data and return them } } 

我有获取数据的表单,这很好用。

但是,我创建了一个UserControl,它通过这个方法获取数据,当我运行我的项目时工作正常,但是,包含UserControl的表单会引发设计器exception。

“为了防止在加载设计器之前丢失数据,必须解决以下错误:”

我发现错误位于从检索连接字符串时。

它会抛出nullpointerexception。

但仅限于设计模式。 当我忽略它时,一切正常,但是,我想知道如何解决这个问题。

通过我的UserControl访问它们时,为什么我的 null?

更新1

似乎我的UserControl根本无法识别

当我将此代码放入UserControl Load事件时,我也得到了一个null引用。

 private void SelectUser_Load(object sender, EventArgs e) { txtLocation.Text = ConfigurationManager.AppSettings["location"].ToString(); } 

我找到了解决方案,在designmode中,usercontrol已经在Load-event中执行代码。 由于App.config在designmode中不可用,因此未找到它,因此未加载。 所以我做了一些检查,检查是否在designmode:

 bool designMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime); if (designMode) { string location = ConfigurationManager.AppSettings["location"].ToString(); } 

下面的文章描述了WPF / Win Forms中的这个问题。 请看一看…

MS论坛

我想你只需要调整你如何获取你的ConnectionString

 using (iDB2Connection cn = new iDB2Connection(ConfigurationManager.ConnectionStrings["iseries"].ConnectionString) { //get the data and return them }