将对象列表发送到另一个表单

时间:2016-12-31 01:40:08

标签: c# .net list listbox add

我在form1中有一个类的对象列表。在form2中,我有一个列表框,需要从form1的列表中填充对象。这是小代码

public class Form1:Form
{
   public List<RegistrationInformation> car = new List<RegistrationInformation>();

   private void btnRegister_Click(object sender, EventArgs e)
   {
      //Create new object of class Registrationinformation which have created
      //new property like a Name, Surname, Car...

      RegistrationInformation c = new RegistrationInformation();
      c.Name= txtName.Text;
      c.Surname= txtSurname.Text;
      c.Car= txtCar.Text;
      car.Add(c); //Add object to list
      int number = car.Count; //this give me right result every next time
    }
}

public class Form2:Form
{
    //I tried this
    Form 1 frm = new Form1();
    listBox1.Items.AddRange(frm.car);

    //In this form I have some information about registered car and his owner
    //The left side of form is for listBox the right side is for some controls           
    //like is label, text box..When I select one item from list box I want to show information about them
    //So for that I tried with next code 

    int number = frm.car.Count; //But I find this problem - this give me result 0
    //So this code don't work
    if (number > 0)
    {
        for (int i = 0; i < number; i++)
        {
           string NameSurname = frm.car[i].Name + " " + rg.car[i].Surname;
           listBox1.Items.Add(NameSurname);
        }
    }
}

我在从列表中添加项目到列表框时遇到问题。当我在表单2中调用列表时,我得到他们没有项目的结果。我点击按钮添加项目。因此,每当用户更改txtBox Name / Surname / Car并单击Button1时,他们就会使用属性方法Name,Surname,Car创建一个类的对象。然后对象放到List。在第二个按钮上,我打开表格2,我有像我在评论后描述的屏幕 - listBox1.Items.AddRange(frm.car);

你是否知道为什么第二种形式没有在列表中看到项目是什么问题?

更新:我忘了添加我创建Form1的新实例并在表单加载时使用它访问汽车列表我试图添加类form2的构造函数但没有成功。

2 个答案:

答案 0 :(得分:1)

这是您的第一个表单中的列表:

public List<RegistrationInformation> car = new List<RegistrationInformation>();

btnRegister_Click中点击按钮时,您可以将项目添加到该列表中。

Form2中,您创建Form1的实例并将其命名为frm并访问car列表。这个新表单frm,没有人点击按钮,因此列表car为空。因此,列表中没有任何项目。

答案 1 :(得分:0)

问题在于变量的范围。就像@CodingYoshi写的那样,你在Form1中创建的Form2实例从未将任何汽车添加到列表中。

我建议您创建一个新类来托管有问题的列表(可能是单例,或者由&#34; main&#34;表单实例化)。这样,您就可以在Form1Form2之间共享列表。