我正在尝试构建一个可以在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)中。
有什么建议吗?
答案 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)
{
}