C#:设置活动窗体,更改该窗体上的字段

C#:设置活动窗体,更改该窗体上的字段,c#,winforms,C#,Winforms,我正在尝试向列表框1中添加一个项目,该项目位于表单5的表单4上。我研究了一下,在这个网站上找到了一个应该有效的答案: var form = Form.ActiveForm as Form4; form.listBox1.Items.Add("aaa"); 我得到一个“NullReferenceException”。这就是我找到的解决方案,但我甚至不明白为什么它会起作用。我的Form4实例称为formfour,我从主窗体创建如下内容: Form4 formfour = new Form4();

我正在尝试向列表框1中添加一个项目,该项目位于表单5的表单4上。我研究了一下,在这个网站上找到了一个应该有效的答案:

var form = Form.ActiveForm as Form4;
form.listBox1.Items.Add("aaa");
我得到一个“NullReferenceException”。这就是我找到的解决方案,但我甚至不明白为什么它会起作用。我的Form4实例称为formfour,我从主窗体创建如下内容:

Form4 formfour = new Form4();
formfour.Show();
listBox1修饰符设置为public。

格式5

   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();

要了解更多信息,请查看此您获得
NullReferenceException
的原因是您当前的
ActivityForm
未被强制转换为
Form4
,这就是您在实例
表单中获得
null
的原因

从问题中可以看出,您已经打开了
Form4
,并且希望将该表单设置为活动:

您可以使用属性并获取
Form4
的实例,如:

Form4 form = Application.OpenForms["Form4"] as Form4;
if(form != null)
   form.Focus();
此外,如果要将项目添加到现有表单的列表框中,则:

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

但那会创造一个新的表格4不?如果我想将其添加到已打开的表单中,该怎么办?然后使用您已创建的实例打开表单,将项目添加到列表中并刷新表单4。