2017-08-17 107 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; 
    } 
}