2013-02-09 2 views
0

이 오류와 관련하여 많은 스레드가 있다는 것을 알고 있지만 진정으로 솔루션을 이해하기 위해 최선을 다했지만 제대로 작동하지 않을 수 있습니다.NullReferenceException for 루프의 레이블 배열을 만들 때 오류가 발생했습니다.

오류 (아래 코드)를 제공하는 간단한 테스트 프로그램을 작성했습니다. 실제 프로그램에서는 많은 수의 레이블을 만들고 싶지만 런타임에 숫자가 달라 지므로 코드에서 수동으로 만들 수는 없습니다.

도움을 주시면 감사하겠습니다.

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

실제로 레이블을 만들지 않고도 레이블 배열을 만들 수 있습니다.

루프에 대한 귀하의 내부의 첫 번째 라인 등이 줄을 추가

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

찰흙을! 감사합니다 - 많이 감사드립니다! – user2056166

1

당신은 Label에 배열의 모든 구성원을 초기화하지 않은 - 배열은 널 (null)이 포함되어 있습니다.

Label[] label = new Label[3]; 

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

     InitializeComponent();    
    } 
당신은 루프의 시작 목록 추가 라인에서 모든 레이블을 만들어야합니다
+0

Doh! 감사합니다 - 많이 감사드립니다! – user2056166

+0

또 다른 방법은 필드 초기화 프로그램을'Label [] label = {new Label(), new Label(), new Label(),};'으로 변경하는 것입니다. –

1

:

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

Doh! 감사합니다 - 많이 감사드립니다! – user2056166

관련 문제