Выберите значение в ComboBox, загруженном объектами

Как выбрать элемент в комбинированном окне с помощью клавиши «02»?

public class GenericComboBox
{
    private string _key = string.Empty;
    private string _value = string.Empty;

    public string Key
    {
        get { return _key; }
        set { _key = value; }
    }

    public string Value
    {
        get { return _value; }
        set { _value = value; }
    }

    public GenericComboBox(string key, string value)
    {
        _key = key;
        _value = value;
    }
}

//Add data
IList<GenericComboBox> data = new List<GenericComboBox>();

data.Add(new GenericComboBox("01", "01 text"));
data.Add(new GenericComboBox("02", "02 text"));
data.Add(new GenericComboBox("03", "03 text"));

comboBox1.DataSource = data;
comboBox1.ValueMember = "Value";

//comboBox1.SelectItem With key equal "02"

Спасибо.

13.10.2009 14:06:39
4 ОТВЕТА
РЕШЕНИЕ

.Net 2.0: (для этого данные должны быть списком, а не IList.)

    this.comboBox1.SelectedItem = data.Find(delegate(GenericComboBox gc) {return gc.Key == "02"; });

.Net 3.5:

    this.comboBox1.SelectedItem = data.First(gc => gc.Key == "02");
1
13.10.2009 14:13:06
Как мне поступить в случае отсутствия доступа к переменным данным? Например, если я выберу comboBox в событии нажатия кнопки
andres descalzo 13.10.2009 14:21:45
comboBox1.SelectedItem = ((List <GenericComboBox>) comboBox1.DataSource) .Find (делегат (GenericComboBox gc) {return gc.Key == "02";});
andres descalzo 13.10.2009 14:23:34

Установите SelectedValueсвойство. ComboBoxБудет выбрать элемент с этим набором значений на нем.

1
13.10.2009 14:12:24

Как насчет использования словаря вместо IList? Затем вы можете получить значение с помощью ключа.

0
13.10.2009 14:14:08

Переопределите Equalsв вашем классе GenericComboBox:

public override bool Equals(object obj)
{
   return string.Compare(Key, obj.ToString(), true) == 0;
}

Тогда этот код должен работать:

comboBox1.SelectedItem = "02";
1
13.10.2009 14:25:56