以另一种形式创建/修改列表
本文关键字:修改 列表 创建 另一种 | 更新日期: 2023-09-27 18:11:52
我想打开第二个表单,创建对象,将它们添加到列表中,并将列表返回给主表单,但我无法在主表单中看到列表中的对象。
这是我目前所掌握的。
Mainform:
public List<Actor> actorenlijst = new List<Actor>();
public List<Actor> getActoren()
{
return actorenlijst;
}
public void setActoren(List<Actor> actorlist)
{
this.actorenlijst = actorlist;
}
private void button3_Click(object sender, EventArgs e)
{
foreach (Actor actor in actorenlijst)
{
MessageBox.Show(actor.getName());
}
}
Form2:
MainForm mainform = new MainForm();
List<Actor> actoren = new List<Actor>();
public void button1_Click(object sender, EventArgs e)
{
actoren = mainform.getActoren(); //Doesn't work!?!
if (actoren.Count >= 3)
{
MessageBox.Show("You can't add more than 3 actors.");
}
else
{
actoren.Add(new Actor(tbNaam.Text));
}
foreach (Actor actor in actoren)
{
MessageBox.Show(actor.getName()); //works correctly
}
mainform.setActoren(actoren); //Doesn't Work !?!
}
当我询问Form2
中的列表中有什么时,它告诉我我想要什么,但是当我在我的mainform中做同样的事情时,列表是空的。
任何帮助将非常感激!!
创建新的MainForm
是行不通的,因为每个实例都有自己的字段和属性。在新实例上设置actorenlijst
不会改变其他实例上的actorenlijst
。
相反,您可以将Nieuwe_Actor
表单上的actoren
替换为这样的公共属性:
public List<Actor> Actoren { get; set; }
然后显示Form2:
var form2 = new Nieuwe_Actor();
form2.Actoren = this.actorenlijst;
form2.ShowDialog();
现在两个表单都有对相同的列表的引用,所以不需要setActoren
.