2017-08-17 76 views
0

複選框的正開始陣列我有2只在其上的CheckBox一個WinForm,燒成的情況下,當的CheckedChanged。現在....這個事件調用從其它級,其中i嘗試事件燒成法的值與索引分配給一個checkboxarray方法[0]。聲明並在其他類(未Form1中)

,但我得到總是「NullReferenceException異常」的時候,新的初始化CheckBoxArray獲取一個值.....北京時間爲什麼有這麼???這裏是我的代碼:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     this.checkBox1.CheckedChanged += 
      new EventHandler(new DoSomething().FromForm1Class); 
    } 
} 

class DoSomething 
{ 
    CheckBox[] mycheckboxes = new CheckBox[2]; 

    public void FromForm1Class(object sender, EventArgs e) 
    { 
     CheckBox n = sender as CheckBox; 

     mycheckboxes[0].Checked = n.Checked; 
    } 
} 
+0

什麼是你的實際需求?我認爲你很複雜 –

回答

0

U的缺失的初始化

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     this.checkBox1.CheckedChanged += new EventHandler(new DoSomething().FromForm1Class); 
    } 
} 

class DoSomething 
{ 
    CheckBox[] mycheckboxes = new CheckBox[2]{new CheckBox(), new CheckBox()}; 

    public void FromForm1Class(object sender, EventArgs e) 
    { 
     CheckBox n = sender as CheckBox; 

     mycheckboxes[0].Checked = n.Checked; 
    } 
} 
3

在類DoSomething中聲明瞭一個CheckBox數組,但不初始化Array中的每個元素。這就是爲什麼你會得到一個NullReferenceException,因爲0號元素爲空 - 它不是一個複選框!因此,你需要:

class DoSomething 
{ 
    CheckBox[] mycheckboxes = new CheckBox[2]; 

    public DoSomething() 
    { 
     mycheckboxes[0] = new CheckBox(); 
     mycheckboxes[1] = new CheckBox(); 
    } 

    public void FromForm1Class(object sender, EventArgs e) 
    { 
     CheckBox n = sender as CheckBox; 

     mycheckboxes[0].Checked = n.Checked; 
    } 
}