0

我有一堂类似于:

class ComboboxValue
{
  public int Id { get; private set; }
  public string Name { get; private set; }

  public ComboboxValue(int id, string name)
  {
    Id = id;
    Name = name;
  }

  public override string ToString()
  {
    return Name;
  }
}

要从组合框中获取选定的值,我使用:

Combobox cb = new Combobox();
cb.Items.Add(new ComboboxValue(10, "Example value"));
ComboboxValue tmpComboboxValue = (ComboboxValue)cb.SelectedItem;

但是当我知道以前存储的 ID 时,如何设置 ComboBox 的索引?...对于此示例,ID:10(来自 sql 查询)

4

1 回答 1

0

这是第一个涉及跟踪您在 ComboBox 中填充的项目的解决方案:

// Populate the ComboBox
var values = new ComboBoxValue[]
{
    new ComboBoxValue() { ID = 1, Name = "Test" },
    new ComboBoxValue() { ID = 2, Name = "Test 2" },
};

comboBox1.Items.AddRange(values);

...

// Set selected item based on an ID
int id = 1;
comboBox1.SelectedItem = values.Single(x => x.ID == id);

cb.SelectedItem = item如果您将实例传递给类,而不仅仅是 id,您可以只写。

您还可以利用 ComboBox 的ValueMemberSelectedValue属性来做得更好。您必须首先设置DataSourceComboBox 的属性才能这样做。您应该能够将 DataSource 设置为一个简单的列表。

var values = new ComboBoxValue[]
{
    new ComboBoxValue() { ID = 1, Name = "Test" },
    new ComboBoxValue() { ID = 2, Name = "Test 2" },
};

comboBox1.DataSource = values;
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "ID";

comboBox1.SelectedValue = 1;
于 2013-10-15T20:34:23.673 回答