2013-02-09 25 views
0

我知道有很多關於此錯誤的線索,但我真的盡我所能瞭解該解決方案,並且似乎無法設法使其發揮作用。在for循環中創建標籤數組時出現NullReferenceException錯誤

我寫了一個簡單的測試程序,給出了錯誤(代碼如下)。我應該指出,對於實際的程序,我想創建大量的標籤,並且數字在運行時會有所不同,所以我不能在代碼中手動創建它們。

任何幫助將非常感激。

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

回答

1

您創建一個標籤數組而不實際創建標籤。

添加此行的第一行的內部for循環:

label[i] = new Label(); 
+0

衛生署!謝謝 - 非常感謝! – user2056166 2013-02-09 14:32:49

1

您還沒有初始化數組的任何成員爲Label - 數組包含空值。

Label[] label = new Label[3]; 

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

     InitializeComponent();    
    } 
+0

Doh!謝謝 - 非常感謝! – user2056166 2013-02-09 14:33:58

+0

另一種方法是將字段初始值設定項更改爲'Label [] label = {new Label(),new Label(),new Label(),};'。 – 2013-02-09 16:02:26

1

你應該從列表中 附加線創建的每個標籤的循環的開始:

label[i] = new Label(); 
+0

Doh!謝謝 - 非常感謝! – user2056166 2013-02-09 14:33:11