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 = itemIDだけでなくインスタンスをクラスに渡す場合は、単に書くことができます。

ValueMemberComboBox の プロパティとプロパティを利用してSelectedValue、これをもう少しうまく行うこともできます。DataSourceそのためには、最初に ComboBoxのプロパティを設定する必要があります。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 に答える