如何填充c#windows表单组合框?

Ame*_*mer 14 .net c# combobox winforms

如何从sql数据库填充一个组合框(带有id和名称列的学生表),显示文本代表学生的名字,组合框项目的值是该学生的id,当我得到的值时组合框我会得到id值

Cha*_*thJ 27

以下是您的重要属性.

ComboBox.DataSource属性

数据源可以是数据库,Web服务或稍后可用于生成数据绑定控件的对象.设置DataSource属性时,无法修改items集合.

ComboBox.DisplayMember属性

一个String,指定DataSource属性指定的集合中包含的对象属性的名称.默认值为空字符串("").

ComboBox.ValueMember属性

一个String,表示DataSource属性指定的集合中包含的对象属性的名称.默认值为空字符串("").

DataTable dataTable = GetDataTable("Select * from Student"); // You have to implement the ways to retrieve data from the database.
comboBox1.Datasource = dataTable;
comboBox1.DisplayMember = StudentName; // Column Name
comboBox1.ValueMember = StuentId;  // Column Name
Run Code Online (Sandbox Code Playgroud)

如果您想以编程方式添加项目,这是一种方法.

private class Item 
{
      public string _Name;
      public int _Id

      public Item(string name, int id) 
      {
          _Name = name; 
          _Id = id;
      }

      public string Name
      {
          get { return _Name; }
          set { _Name = value; }
      }

      public string Id
      {
          get { return _Id; }
          set { _Id = value; }
      }
}   

comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "Id";

comboBox1.Items.Add(new Item("Student 1", 1));
comboBox1.Items.Add(new Item("Student 2", 2));
comboBox1.Items.Add(new Item("Student 3", 3));
Run Code Online (Sandbox Code Playgroud)

有很多方法可以做到这一点.

如何:从Windows窗体组合框中添加和删除项目

ComboBox.Items属性

  • 在上面的示例中,您需要将"{get; set;}"添加到Item类属性"Name"和"Id",否则组合框将仅显示对象类型. (2认同)

Zan*_*son 3

首先,您需要弄清楚如何从数据库取回数据,但我假设您要么知道这一点,要么打算就此提出另一个问题。从那里,您最好的选择是将一些集合绑定到ComboBox. 是使用 执行此操作的示例DataSet。您还可以绑定到List<T>或 other IEnumerable<T>,如果您要使用 LINQ 获取数据,这会更有意义。 这里有一个关于将 a 绑定List到 a 的问题ComboBox 。也许您可以告诉我们您打算如何获取数据,以便我们可以为您提供更有针对性的答案?