0

我想编写一个程序,它就像一个设计师,用户可以在表单上添加文本框,并且可以保存用户放入这些文本框中的所有内容(如设置),并且在再次关闭并打开表单后,文本框的文本将重新发送不变.

所以我决定在项目->设置中进行设置,然后在我的代码中创建一个数组。但是每当我想访问我的设置时,它都会给我一个例外:

“FormDesigner.exe 中发生了‘System.NullReferenceException’类型的未处理异常”

这是我定义数组的代码:

Settings[] formsetting=new Settings[3];

这是我处理每个文本框的 textchanged 事件的代码:(我使用文本框的标签将设置索引与每个文本框匹配)

void t_TextChanged(object sender, EventArgs e)
        {
            TextBox temp = (TextBox)sender;
            int s =(int) temp.Tag;
            string str = temp.Text;
            frmsetting[s].text = str;
        }

最后一行是我得到错误的地方。

有人可以向我解释问题是什么以及如何解决吗?如果我的方式是错误的,你能告诉我另一种方式吗?谢谢

4

2 回答 2

4

您尚未初始化数组中的对象。

这样做:

Settings[] formsetting = new Settings[3];

..创建数组。3个都是null。做这个:

var formsetting = new Settings[3] {
    new Settings(),
    new Settings(),
    new Settings()
};
于 2013-12-06T05:16:48.100 回答
3

在初始化数组时,实际上并没有初始化任何值。您目前拥有的相当于以下内容:

Settings[] formsetting=new Settings[3];
formsetting[0] = null;
formsetting[1] = null;
formsetting[2] = null;

在对它进行任何操作之前,您需要在要使用的索引处初始化该值。

于 2013-12-06T05:16:41.520 回答