将对象添加到列表中并在列表框上同时显示它们

时间:2019-03-05 15:49:36

标签: c# .net oop

因此,我在Form1中有一个空列表和一个listBox,我希望用户在此添加“汽车”对象。为了选择他要添加的汽车,我创建了另一个表格Form2。

因此Form1列表如下:

List<Car> listCars= new List<Car>();

而且我还在Form1中创建了一个函数,因此Form2可以传递给将添加Car对象的Form1:

public void addCar(Car c)
    {
        listCars.Add(c);
        listBox.DataSource = listCars;
        listBox.DisplayMember = "carName";
        listBox.ValueMember = "idCar";
        listBox.Refresh();
    }

Form2有一个按钮,用于激活Form1 addCar函数,并将选定的Car对象传递给它:

 private void btnAdd_Click (object sender, EventArgs e)
    {
        form1.addCar(selectedCar);
        this.Close();
    }

因此,当我尝试将汽车添加到Form1列表框中时,会发生什么,它仅添加我选择的第一个汽车,如果我尝试继续添加新汽车,则列表框将仅显示我添加的第一个汽车。 / p>

2 个答案:

答案 0 :(得分:0)

看起来您的Form1重新初始化了listCars。尝试调试addCar方法,看看它是否为空。

答案 1 :(得分:0)

这必须工作!!

使用以下代码:

    public void addCar(Car c)
{
    listCars.Add(c);

    listBox.DataSource = null;     //Make Datasource null otherwise you have to use IObservable collection

    listBox.DataSource = listCars;
    listBox.DisplayMember = "carName";
    listBox.ValueMember = "idCar";
    listBox.Refresh();                // Not necessary !
}

listBox.DataSource = null;