Установите выбранный элемент комбинированного списка на основе пары ключ-значение. - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть поле со списком, которое я заполняю следующим образом:

this.reqTypeInput.Items.Add(new RequestType("Label 1", "Value1"));
this.reqTypeInput.Items.Add(new RequestType("Label 2", "value2"));
this.reqTypeInput.Items.Add(new RequestType("Label 3", "value3"));

Мой класс RequestType:

class RequestType
{
    public string Text { get; set; }
    public string Value { get; set; }

    public RequestType(string text, string val)
    {
        Text = text;
        Value = val;
    }

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

У меня есть значение, например, «Value1».Как я могу установить selectedItem выпадающего списка на объект {Label 1, Value1}?

Я пытался:

this.reqTypeInput.SelectedIndex = this.reqTypeInput.Items.IndexOf("Value1");

Ответы [ 4 ]

5 голосов
/ 02 декабря 2011

Похоже, вы пытаетесь найти индекс, как будто ваш ComboBox содержит только строковые значения, когда он на самом деле содержит RequestType объектов. Вы пытались переопределить ваш Equals оператор?

Посмотрите этот пост и этот для примеров переопределения Equals.

РЕДАКТИРОВАТЬ : Как уже упоминалось в другом ответе, хорошей практикой является заполнение коллекции объектов, которые вы хотите в ComboBox, затем привязка этой коллекции к вашему ComboBox. Первая ссылка в моем ответе здесь имеет пример этого.

3 голосов
/ 02 декабря 2011

Если типы запросов не меняются, вы можете сначала сохранить каждый объект RequestType в переменной, а затем установить для свойства SelectedItem ComboBox эту переменную.

Например:

RequestType type1 = New RequestType("Label 1", "Value 1");
RequestType type2 = New RequestType("Label 2", "Value 2");

reqTypeInput.Items.Add(type1);
reqTypeInput.Items.Add(type2);

Затем установите его так:

reqTypeInput.SelectedItem = type2;
1 голос
/ 02 декабря 2011

Вы можете попробовать это:

RequestType type1 = New RequestType("Label 1", "Value 1");
RequestType type2 = New RequestType("Label 2", "Value 2");

reqTypeInput.Items.Add(type1);
reqTypeInput.Items.Add(type2);

this.reqTypeInput.SelectedIndex = this.reqTypeInput.Items.IndexOf(type1);

HTH.

0 голосов
/ 02 декабря 2011

Лот выбора, Список, SortedList, Словарь, SortedDictionary.Но, по сути, вы сохраняете свою коллекцию RequestTypes в списке, а затем заполняете из нее комбо, вы можете даже связать ее, если хотите.

Единственное, что комбо делает о вашей коллекции типов запросов, это результатметод ToString каждого RequestType.Если вы хотите найти по значению, то Combox увидит только то, что вы в него вставили, то есть RequestType.ToString ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...