我想写一个程序,它在某种程度上就像一个设计器,用户可以在表单上添加文本框,用户放入这些文本框的所有内容都可以保存(就像一个设置),在再次关闭和打开表单后,文本框的文本将保持不变。
因此,我决定在project->settings中进行设置,然后在代码中进行数组设置。但每当我想访问我的设置时,它都会给我一个例外:
"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;
}
最后一行是我得到错误的地方。
有人能向我解释一下问题出在哪里以及如何解决吗?如果我的方法不对,你能告诉我另一种方法吗。感谢
您尚未初始化数组中的对象。
这样做:
Settings[] formsetting = new Settings[3];
创建数组。不过,这三个都是null
。这样做:
var formsetting = new Settings[3] {
new Settings(),
new Settings(),
new Settings()
};
初始化数组时,实际上并没有初始化任何值。你目前拥有的相当于以下内容:
Settings[] formsetting=new Settings[3];
formsetting[0] = null;
formsetting[1] = null;
formsetting[2] = null;
在进行任何操作之前,您需要在要使用的索引处初始化值。