C#学习教程:如何从另一个表单访问列表分享


如何从另一个表单访问列表

我有两种forms,在Form1中,从类创建对象并放入列表(对象列表)。 然后我有另一个字符串列表,它应该是Form2的源 – 字符串列表包含将对象的属性转换为字符串的元素。 打开后, Form2应读取字符串列表中的数据并将其放入列表框中。 问题是它没有看到数据。 我可以访问Form1数据,所以我确定列表已填充,但Form2无法访问数据 – 如何解决这个问题?

我尝试过从论坛和其他来源获得的不同想法,但没有一个对我有用。 什么工作填充了应该是Form1’初始化组件’中的数据源的列表,但它不是一个完美的解决方案,因为对象是在单击按钮后创建的。 现在我把列表放在Form1类的顶部,但它仍然通过单击按钮填充 – 它不起作用,列表框仍然是空的。

这是Form1的代码:

 public partial class Form1 : Form { public House MyHouse = new House(); public List allPeopleSource = new List(); public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Person p1 = new Person("Simon", 33); Person p2 = new Person("Peter", 23); MyHouse.IsInhabitedBy(p1); MyHouse.IsInhabitedBy(p2); allPeopleSource.Add(p1.Name + " | " + p1.Age.ToString()); allPeopleSource.Add(p2.Name + " | " + p2.Age.ToString()); Form2 lista = new Form2(); lista.ShowDialog(); } } 

这是Form2的代码:

 public partial class Form2 : Form { Form1 main = new Form1(); List allPeople = new List(); public Form2() { InitializeComponent(); foreach (string s in main.allPeopleSource) { allPeople.Add(s); } foreach (string s in allPeople) { lsbResidents.Items.Add(s); } } } 

我感谢任何帮助。

改变这个:

  Form2 lista = new Form2(); 

这样的事情:

  Form2 lista = new Form2(allPeopleSource); 

从form2中删除它:

  Form1 main = new Form1(); 

并将此代码放在form2中

 List allPeopleSourceInForm2; Public Form2(List allSourcesAsParameter) { allPeopleSourceInForm2 = allSourcesAsParameter; } 

现在你的代码应该工作了。 我们在这里做的是将一个列表引用到Form2。 Form1包含所有信息,我们只是将此数据的地址传递给Form2。 此引用作为构造函数参数提供给Form2。 在Form2构造函数中,我们可以使用数据执行任何操作,但请注意,form2中对集合的所有更改都将影响Form1中的集合。

您可以创建一个方法来填充Form2上的列表(我称之为SetAllPeople ):

 public partial class Form2 : Form { public void SetAllPeople(List input) { foreach (string s in input) { lsbResidents.Items.Add(s); } } public Form2() { InitializeComponent(); } } 

然后以这种方式调用Form2

上述就是C#学习教程:如何从另一个表单访问列表分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

 Form2 lista = new Form2(); lista.SetAllPeople(allPeopleSource); lista.ShowDialog(); 

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/960143.html

发表评论

邮箱地址不会被公开。 必填项已用*标注