-1

我正在尝试构建一个可以在 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)中。

有什么建议么?

4

2 回答 2

3

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

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

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

于 2012-11-06T22:59:19.320 回答
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)
{
}
于 2012-11-06T23:13:31.790 回答