[C#、winform] FormDesigner.cs报错The variable 'xxxxxx' is either undeclared or was never assigned

背景:

我写了一个App.config配置文件,在里面定义了模块:

<add key="key1" value="std1|std2|std3|std4" />

以实现winform里的一些参数修改的接口;(App.config里的参数类似全局变量,能够比较灵活修改你的一些配置信息)

 

在FormDesigner.cs类里面,我想使用这个key1参数作为comBox下拉菜单的内容,代码如下:

1: string CB_SSFN_Items = ConfigurationManager.AppSettings["key1"].ToString();
2: string[] Str_CB_SSFN = CB_SSFN_Items.Split(new char[] { '|' });

 

出现的问题如下:

1:如果运行代码,一切正常,也没什么错误;

2:不运行代码,Form.cs类会出现下面的错误:

如果注释掉这句话:string[] Str_CB_SSFN = CB_SSFN_Items.Split(new char[] { '|' });

就Form.cs就正常显示我画的Form了;

 

分析:

1:错误不是运行时的,且运行代码没出现任何问题,判断应该是FormDesigner.cs在生成Form时出现了错误,

2:提示说参数CB_SSFN_Items没有被初始化,应该是没有运行代码前提下FormDesigner.cs无法从以下代码:

     string CB_SSFN_Items = ConfigurationManager.AppSettings["key1"].ToString();

     中得到"key1"对应的value值,导致CB_SSFN_Items为null,未被初始化;

 

解决方案:

修改以前的代码:

1: string CB_SSFN_Items = ConfigurationManager.AppSettings["key1"].ToString();
2: string[] Str_CB_SSFN = CB_SSFN_Items.Split(new char[] { '|' });

修改后:
1: string CB_SSFN_Items = string.Empty; 

2: CB_SSFN_Items = ConfigurationManager.AppSettings["key1"].ToString();

 

这样就能正常显示Form.cs了。

 

总结:

    form.designer.cs:对应form.cs,实际上是把你通过设计器拖拽过去的控件在这里实现,也就是说实际上你拖一个控件 这边对应生成代码,然后在form的构造器里调用他。所以你接着就可以在form.cs内部访问到这些控件了。

    因此不建议在form.designer.cs内添加代码,如果想在窗体第一次load的时候就load某些参数或功能,可以考虑在form.cs类的如下位置:

public Form()
{
    InitializeComponent();//窗体初始化函数

    addYourFunctionHere();
}

或者你也可以双击form窗体,添加load事件:

private void Form_Load(object sender, EventArgs e)
{
    //add the your code HERE;
}

 

 

 

 

 

posted @ 2014-05-07 10:06  McQueen1987  阅读(2280)  评论(0编辑  收藏  举报