2013-03-29 137 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。 –