2013-03-29 89 views
1

我试图将一个项目添加到窗体Form4上的listBox1。我研究了一下,发现在这个网站,应该工作回答:C#:设置活动窗体,更改该窗体上的字段

var form = Form.ActiveForm as Form4; 
form.listBox1.Items.Add("aaa"); 

我得到一个“NullReferenceException异常”。这是我找到的解决方案,但我甚至不明白为什么它应该起作用。我的Form4的实例称为formfour,我从主窗体创建如下:

Form4 formfour = new Form4(); 
formfour.Show(); 

listBox1修饰符设置为public。

回答

3

你所得到的NullRefereneException的原因是,当前的ActiceForm不被铸造为Form4,这就是为什么你在你的实例中获得nullform

从问题看来,你有Form4打开并要设置形式为活动:

您可以使用Application.OpenForms财产和获得的Form4一个实例,如:

Form4 form = Application.OpenForms["Form4"] as Form4; 
if(form != null) 
    form.Focus(); 

此外,如果你想添加项目到现有表单上的列表框然后:

form.listBox1.Items.Add("aaa"); 
0

在Form5

Form4 frm4= new Form4(); 
    frm4.listbox.Items.Add("aaa"); 
    // make sure that the listbox on form4 is set to public from its properties 

要刷新form4使用

frm4.refresh(); 

而对于更多的通过这个link

+1

但是,这将创建一个新的form4不?如果我想将其添加到已打开的表单中,该怎么办? – Juicy

+0

然后使用已创建的实例打开表单,将这些项目添加到列表中并刷新表单4。 –