WinForms / C #: добавление элементов в Combox и управление значением элемента (числовое) - PullRequest
1 голос
/ 14 января 2011

Я заполнил свои Предметы в поле со списком, используя конструктор, и все, что я передаю, - строку.

Хотя теперь мне нужно контролировать, какой ключ / индекс хранится с каждым элементом.

Я думал, что есть объект item, но я посмотрел на метод ADD, и он принимает объект ..

Как передать в элемент управления ключ / индекс, то есть то, что возвращается, когда я делаю SelectedItem.

Таким образом, если я выбрал выбранный текст, я получаю строку, которая отображается в текущем выбранном раскрывающемся списке, но если я выбрал выбранный элемент, я хочу получить пользовательский номер, который мне нужно сохранить с ним ...

Есть идеи, как это сделать?

Заранее спасибо

1 Ответ

5 голосов
/ 14 января 2011

Вам необходимо привязать его к коллекции объектов ключ \ значение и использовать свойства DisplayMember и ValueMember , чтобы установить, что будет отображаться / возвращаться.

Вот пример:

public class ComboItem
{
    public string stringValue { get; set; }
    public int indexValue { get; set; }
}

public void LoadCombo()
{
     List<ComboItem> list = new List<ComboItem>();
     // populate list...
     // then bind list
     myComboBox.DisplayMember = "stringValue";
     myComboBox.ValueMember = "indexValue";
     myComboBox.DataSource = list;
}

Тогда

myComboBox.SelectedText       // will return stringValue
myComboBox.SelectedValue      // will return indexValue
myComboBox.SelectedItem       // will return the ComboItem itself
myComboBox.SelectedIndex      // will return the items index in the list

В качестве альтернативы вы можете сохранить индекс, добавив свойство Tag (которое частоиспользуется для хранения подобных вещей), создав пользовательский комбо-элемент, прочитайте здесь, как это сделать

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