NullReferenceException在for循环中创建标签数组时出错

时间:2013-02-09 14:24:28

标签: c# forms nullreferenceexception labels

我知道有很多关于这个错误的主题,但我真的尽力了解解决方案,似乎无法让这个工作起作用。

我写了一个简单的测试程序,它给出了错误(下面的代码)。我应该指出,对于实际程序,我想创建大量标签,并且数字在运行时会有所不同,所以我不能在代码中手动创建它们。

非常感谢任何帮助。

namespace Test
{
    public partial class Form1 : Form
    {

        Label[] label = new Label[3];

        public Form1()
        {
            InitializeComponent();              
        }

        private void button1_Click(object sender, EventArgs e)
        {            
           for (int i = 0; i < 3; i++)
           {
              label[i].Location = new Point(10, 10 + 40*i);
              label[i].Text = "My name is label " +i;
              this.Controls.Add(label[i]);                
           }
           MessageBox.Show("Done");   
        }
    }
}

3 个答案:

答案 0 :(得分:1)

您可以在不实际创建标签的情况下创建标签数组。

将此行添加为for循环中的第一行:

label[i] = new Label();

答案 1 :(得分:1)

您尚未将数组的任何成员初始化为Label - 该数组包含空值。

    Label[] label = new Label[3];

    public Form1()
    {
        label[0] = new Lablel();
        label[1] = new Lablel();
        label[2] = new Lablel();

        InitializeComponent();              
    }

答案 2 :(得分:1)

您应该从列表中创建每个标签 将行添加到循环的开头:

label[i] = new Label();