• [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;
    }

  • 相关阅读:
    LeetCode "Sum Root to Leaf Numbers"
    LeetCode "Single Number"
    POJ #1033
    POJ #1011
    POJ #2411
    POJ #1276
    POJ #1260
    POJ #1221
    POJ #1080
    POJ #1050
  • 原文地址:https://www.cnblogs.com/McQueen1987/p/3713149.html
Copyright © 2020-2023  润新知