Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UserControl中的ConfigurationManager连接字符串为空_C#_Winforms_Configuration_User Controls - Fatal编程技术网

C# UserControl中的ConfigurationManager连接字符串为空

C# UserControl中的ConfigurationManager连接字符串为空,c#,winforms,configuration,user-controls,C#,Winforms,Configuration,User Controls,我有一个应用程序,它通过数据层将数据发送到表单,数据层使用如下内容: public DataTable get(String query, ArrayList parameters = null) { using (iDB2Connection cn = new iDB2Connection(ConfigurationManager.ConnectionStrings["iseries"].ToString())) { // get the d

我有一个应用程序,它通过数据层将数据发送到表单,数据层使用如下内容:

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的表单抛出了一个设计器异常

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

我发现错误出现在从
检索连接字符串时

它抛出一个nullpointerexception

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

为什么我的
在通过我的用户控件访问它们时为空

更新1

似乎我的用户控件根本不识别

当我把这段代码放在UserControl加载事件中时,我也会得到一个nullreference

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

我认为您只需要调整获取
连接字符串的方式

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

下面的文章以WPF/Win的形式描述了这个问题。请看一看


我找到了解决方案,在设计模式下,usercontrol已经在Load事件中执行了代码。 由于App.config在设计模式下不可用,因此找不到它,因此无法加载。 因此,我对其进行了一些检查,以检查是否处于设计模式:

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

不,仍然获取“对象引用未设置为对象的实例”。出于某种原因,usercontrol中的ConfigurationManager设置为空。这是ASP.NET、Winforms还是什么?是Winforms,我添加了标记。您能够从任何其他位置读取连接字符串值吗?是,除了从UserControl读取值之外,其他一切都正常工作。以“正常”的形式,我可以完美地阅读它。