我继续得到一个null引用异常,按钮数组没有添加到表单中

本文关键字:数组 按钮 添加 表单 异常 null 继续 一个 引用 | 更新日期: 2023-09-27 17:57:40

  1. xml文件没有错误
  2. 饮料类标记为公开
  3. 我试着在没有饮料数组的情况下运行表单,只需将按钮数组添加到表单中,就会出现同样的错误
  4. 我的最终目标是将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();
        }
    
    }
    

我继续得到一个null引用异常,按钮数组没有添加到表单中

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]);
}