【问题标题】:Bind list from class to combobox将列表从类绑定到组合框
【发布时间】:2018-06-20 18:55:39
【问题描述】:

我目前正在用 C# 编写一个非常小的程序,并且我想将这个列表绑定到一个组合框。现在,我已将该列表放入一个类中,并希望将该列表绑定到一个组合框。下面的代码显示了到目前为止我已经走了多远:

表格

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        Locaties locaties = new Locaties();
        List<string> listofLocaties = locaties.retrieveLocations();

        cboxLocToevoegen.DataSource = ???;
        cboxLocOverzicht.DataSource = ???;

    }
}

class Locaties
{
    public List<string> retrieveLocations()
    {
        List<string> LocatieList = new List<string>();
        LocatieList.Add("Koelkast");
        LocatieList.Add("Keukenlade");
        LocatieList.Add("Voorraadruimte");
        LocatieList.Add("Overige");

        return LocatieList;
    }
}

现在,我要对你说实话:我在类和方法方面的知识和经验并不完美。这就是为什么解决方案可能比我想象的更简单。请不要以此评判我,我还在学习!

无论如何,我希望任何人都可以帮助我解决这个问题!

【问题讨论】:

  • 当你cboxLocToevoegen.DataSource = listofLocaties时会发生什么?
  • 另外,您可以将字符串直接添加到 ComboBoxes 或 Locaties 本身的实例,前提是您提供了一个 ToString() 方法来生成您希望为每个条目显示的文本。

标签: c# list class combobox binding


【解决方案1】:

简单

 cboxLocToevoegen.DataSource = listofLocaties ;

或直接

 cboxLocToevoegen.DataSource = locaties.retrieveLocations();

您也可以直接绑定到Locaties列表,然后选择要在CB中显示的属性:

List<Locaties> listofLocaties = new List<Locaties>();
...
//Populate the list
...
cboxLocToevoegen.DataSource = listofLocaties ;
cboxLocToevoegen.DisplayMember = [a property of Locaties class];
// and the value of the CB could be another property of Locaties class:
cboxLocToevoegen.ValueMember = [the value property of Locaties class];

但是你必须编写一个新的Locaties 类:)

【讨论】:

  • 使用第二个。我怎么会这么傻xD谢谢!
猜你喜欢
  • 2014-03-16
  • 1970-01-01
  • 2016-04-23
  • 2010-10-10
  • 1970-01-01
  • 2011-06-28
  • 2018-10-23
  • 1970-01-01
相关资源
最近更新 更多