2012-04-16 2 views
0

나는 다음과 같은 한이 비디오이었다 http://www.youtube.com/watch?v=Y63vq_tcTGk 및 8시 20분에서 그 유형NullReferenceException이 처리되지 않은 # 2

ds.Add(a); 
    show_diem(); 

내가 ds.Add 할 때 오류가 온다 (A);

나는 이것에 익숙하지 않기 때문에 나는 아직도 ds가 무엇인지 확신 할 수 없다. 아무것도 될 수 있을까요? 그는 선언한다

처음에는 뭐니? 그리고 왜 오류가 나타나고 있습니까? 여기 내 Form1의 코드가 있습니다. "Employee"는 클래스이고 "employeeId" "firstName"등은 텍스트 상자입니다. 나는 "ds"대신에 "em"을 사용했다.

using System; 
    using System.Collections.Generic; 
    using System.ComponentModel; 
    using System.Data; 
    using System.Drawing; 
    using System.Linq; 
    using System.Text; 
    using System.Windows.Forms; 
    using System.Collections; 


    namespace Employee_Program 
    { 
     public partial class Form1 : Form 
     { 


    public Form1() 
    { 
     InitializeComponent(); 

    } 

    public ArrayList em; 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     em = new ArrayList(); 
    } 

    private void show_employee() 
    { 
     listView1.Items.Clear(); 
     foreach(Employee a in em) 
     { 
      int i = listView1.Items.Count; 
      listView1.Items.Add(a.FirstName); 
      listView1.Items[i].SubItems.Add(a.LastName); 
      listView1.Items[i].SubItems.Add(a.EmployeeId.ToString()); 
      listView1.Items[i].SubItems.Add(a.YearSalary.ToString()); 

} 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     Employee a = new Employee(); 
     a.FirstName = firstName.Text; 
     a.LastName = lastName.Text; 
     a.EmployeeId = float.Parse(employeeId.Text); 
     a.YearSalary = float.Parse(yearSalary.Text); 
     em.Add(a); 
     show_employee(); 

      } 
     } 
    } 

오류 메시지 : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.

+2

Form1_Load 이벤트가 호출되고 있습니까? – sgmoore

+0

해당 비디오에 사용 된 관행은 끔찍합니다. –

+0

@sgmoore OH 잘못된 것으로 밝혀졌지만 지금은 다시 실행했지만 작동하지만 GUI에는 다른 문제가 있습니다. 버튼을 클릭하면 firstname 값만 표시됩니다. 어떤 아이디어? – user1336868

답변

2

디자이너가 비디오를 모방하는 코드를 작성한 것처럼 보이지만 디자이너가 Form1_Load을 연결하는 데 사용되었을 수 있습니다. 따라서이 양식이 양식에 유선되어 있는지 확인해야합니다. 그렇지 않으면 ArrayList에 대한 초기화가 호출되지 않습니다.

디자이너로 이동하면 양식을 클릭 할 수 있습니다. 그런 다음 속성 창에서 이벤트 탭을 선택하십시오. OnLoad (또는 Load 나는 이름을 알지 못합니다) 이벤트를 찾으십시오. 그런 다음 드롭 다운에서 매개 변수 정의가 일치 할 때 메소드가 나타납니다. 이것을 선택하면 디자이너가 이것을 연결합니다. 당신은 그냥 할 수있는,

public ArrayList em = new ArrayList(); 

마지막 :

배선은 선언이를 수행하여 FormLoad에서 제거하여 다른 방법으로

form.Load += Form1_Load; 

, 당신은 동일한 작업을 수행 할 수 있었던 것처럼 보일 것이다 이 양식 생성자에 \

public Form1() 
{ 
    em = new ArrayList(); 
    InitializeComponent(); 
} 
1

당신은 엠 ll. 문제를 해결할 수있는 한 가지 방법은 다음과 같습니다.

public Form1() 
{ 
    em = new ArrayList(); 
    InitializeComponent(); 
} 

그러나 Form1_Load 이벤트가 연결되지 않은 다른 문제가있을 수 있습니다.

관련 문제