以另一种形式创建/修改列表

本文关键字:修改 列表 创建 另一种 | 更新日期: 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 .