我有两种形式,在Form1中,从类创建对象并将其放入列表(对象列表)。那么我还有另一个字符串列表,该列表应该是该字符串的来源Form2
-字符串列表包含将对象的属性转换为字符串的元素。Form2
,打开后,应从字符串列表中读取数据并将其放入列表框。问题是它看不到数据。我可以访问中的数据Form1
,因此我确定列表已填充,但是Form2无法访问数据-如何解决此问题?
我尝试了来自论坛和其他来源的不同想法,但是没有一个对我有用。起作用的是填充列表,该列表应该是Form1“初始化组件”中的数据源,但这不是一个完美的解决方案,因为在单击按钮后创建了对象。现在,我将列表放在Form1类的顶部,但是单击按钮仍然可以填充该列表-该列表不起作用,列表框仍然为空。
这是以下代码Form1
:
public partial class Form1 : Form
{
public House MyHouse = new House();
public List<string> allPeopleSource = new List<string>();
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<string> allPeople = new List<string>();
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<string> allPeopleSourceInForm2;
Public Form2(List<string> allSourcesAsParameter)
{
allPeopleSourceInForm2 = allSourcesAsParameter;
}
现在您的代码应该可以工作了。我们在这里所做的就是将列表引用带到Form2。Form1包含所有信息,我们只是将这些数据的地址传递给Form2。此引用作为构造函数参数带到Form2。在Form2构造函数中,我们可以对数据进行任何操作,但是要注意,对form2的集合所做的所有更改也会影响Form1中的集合。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句