【问题标题】:Adding objects into a list and showing them simultaneously on a listbox将对象添加到列表中并在列表框中同时显示它们
【发布时间】:2019-03-05 15:49:35
【问题描述】:

所以,我在 Form1 中有一个空列表和一个列表框,我希望用户在那里添加“汽车”对象。为了选择他要添加的汽车,我制作了另一个表格,Form2。

所以 Form1 列表是这样的:

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

而且我还在Form1中做了一个函数,所以Form2可以传递给Form1要添加的Car对象:

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 列表框时会发生什么,它只会添加我选择的第一个,如果我尝试继续添加新车,列表框只会显示我添加的第一个。

【问题讨论】:

    标签: c# .net oop


    【解决方案1】:

    这一定行得通!

    使用以下代码:

        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;

    【讨论】:

    • 好的,所以我删除了 listBox.Refresh,但 listCars 没有 DataSource 属性。我将进一步研究 IObservable,谢谢您的提示!
    • 使用 listBox.DataSource = null;而不是 listCars.DataSource = null; (有输入错误,请参阅更新的代码部分)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-08-09
      • 1970-01-01
      • 2014-06-03
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      • 2018-05-16
      • 1970-01-01
      相关资源
      最近更新 更多