无法以不同的形式向ListBox添加项目

时间:2012-11-06 22:57:11

标签: c# visual-studio-2012

我正在尝试构建一个可以在ListBox控件中存储不同人员的应用程序。

我的ListBox控件位于 Form1 中,因此这种方法给我一些问题:

  public void addPersonToList(Person person) {
            string newPerson = person.firstName + " " + person.lastName + " " + person.age;

            personList.Items.Add(newPerson);

 }

在另一个表单中,我调用addPersonsToList方法,如下所示:

Form1 form1 = new Form1();
  form1.addPersonToList(person);

现在,我已经检查(调试时)addPersonToList中的字符串 newPerson 实际存储了正确的字符串。 问题是字符串不会出现在我的ListBox (名为personList)中。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

使用new,您正在创建项目的全新实例。

Form1 form1 = new Form1();
form1.addPersonToList(person);

因此,此代码创建一个Form1的新实例,并向该实例添加一个项目,该项目可能不是您正在查看的项目。你不知何故需要对正在显示的实例的引用,以便你可以引用它。

答案 1 :(得分:0)

要引用现有的打开表单,请执行以下操作:

foreach (Form frm in Application.OpenForms)
{
     if (frm.GetType() == typeof(Form1))
     {
          Form1 frmTemp = (Form1)frm;
          frmTemp.addPersonToList(person);
          fromTemp.Dispose();
     }
}

同样适用于MDI表格:

foreach (Form frm in MdiParent.MdiChildren)
{
}