我想打开第二个表单,创建对象,将它们添加到列表中并将列表返回到mainform,但是我无法在mainform中看到列表中的对象。
这是我到目前为止所做的。
的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());
}
}
窗体2:
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
中列表中的内容时,它会告诉我我想要什么,但是当我在我的主窗体中执行相同操作时,列表为空。
任何帮助都会受到很多赞赏!!
答案 0 :(得分:0)
创建新的MainForm
将不起作用,因为每个实例都有自己的字段和属性。在新实例上设置actorenlijst
不会更改另一个实例上的actorenlijst
。
相反,您可以使用以下公共属性替换actoren
表单上的Nieuwe_Actor
:
public List<Actor> Actoren { get; set; }
然后当你显示Form2时:
var form2 = new Nieuwe_Actor();
form2.Actoren = this.actorenlijst;
form2.ShowDialog();
现在两个表单都引用了相同的列表,因此不需要setActoren
。