我想写一个程序,不知何故就像一个设计师,用户可以在表单上添加文本框,用户放入这些文本框的所有内容都可以保存(如设置),然后关闭并再次打开表单文本框的文本将重新发送邮件。
所以我决定在project->设置中进行设置,然后在我的代码中创建一个数组。 但每当我想访问我的设置时,它给了我一个例外:
“FormDesigner.exe中发生了'System.NullReferenceException'类型的未处理异常”
这是我定义数组的代码:
Settings[] formsetting=new Settings[3];
这是我处理每个文本框的textchanged事件的代码: (我使用textboxs'标签将设置索引与每个文本框匹配)
void t_TextChanged(object sender, EventArgs e)
{
TextBox temp = (TextBox)sender;
int s =(int) temp.Tag;
string str = temp.Text;
frmsetting[s].text = str;
}
最后一行是我收到错误的地方。
有人可以向我解释问题是什么以及如何解决? 如果我的方式有问题,请你展示另一种做法。 感谢
答案 0 :(得分:4)
您尚未初始化数组中的对象。
这样做:
Settings[] formsetting = new Settings[3];
..创建数组。但是所有3个都是null
。这样做:
var formsetting = new Settings[3] {
new Settings(),
new Settings(),
new Settings()
};
答案 1 :(得分:3)
在初始化数组时,实际上并没有初始化任何值。您目前拥有的内容相当于以下内容:
Settings[] formsetting=new Settings[3];
formsetting[0] = null;
formsetting[1] = null;
formsetting[2] = null;
您需要在执行任何操作之前初始化要使用的索引处的值。