我继续得到一个null引用异常,按钮数组没有添加到表单中
本文关键字:数组 按钮 添加 表单 异常 null 继续 一个 引用 | 更新日期: 2023-09-27 17:57:40
- xml文件没有错误
- 饮料类标记为公开
- 我试着在没有饮料数组的情况下运行表单,只需将按钮数组添加到表单中,就会出现同样的错误
-
我的最终目标是将xml文件中productName元素的文本添加到按钮中。
private void Form1_Load(object sender, EventArgs e) { TextReader stream = null; try { //Deserialize XML from drink.xml file XmlSerializer serializer = new XmlSerializer(typeof(drink[])); stream = new StreamReader("XML/drinks.xml"); drink[] drinks = (drink[])serializer.Deserialize(stream); Button[] btnArray = new Button[drinks.Length]; for (int x = 0; x < drinks.Length; x++)//add to form { this.Controls.Add(btnArray[x]); btnArray[x].Text = drinks[x].productName; } } catch (XmlException ex) { MessageBox.Show(ex.Message, "XML Parse Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (InvalidOperationException ioe) { MessageBox.Show(ioe.ToString(ioe)); } catch (Exception e1) { MessageBox.Show(Convert.ToString(e1)); } finally { stream.Close(); } }
Button[] btnArray = new Button[drinks.Length];
您只创建了一个包含Buttons的数组,但没有创建单独的Button
实例。
在将它们添加到控件并更改其属性之前,您必须创建实际的按钮,例如:
for (int x = 0; x < drinks.Length; x++)//add to form
{
btnArray[x] = new Button { Text = drinks[x].productName };
this.Controls.Add(btnArray[x]);
}