Как добавить пользовательский индекс в ComboBox - PullRequest
0 голосов
/ 23 января 2019

Мне нужна помощь, я новичок в C # и пытаюсь создать combobox с пользовательскими индексами, я добавляю items таким образом

mycb.Items.Add("My value 1");
mycb.Items.Add("My value 2");

таким образом я получаю эти индексы по умолчанию 0 and 1, поэтому я пытаюсь дать нужные мне индексы CB, используя Insert

mycb.Items.Insert(5,"My value 1");
mycb.Items.Insert(6,"My value 2");

таким образом CB должен иметь индексы 5 and 6, но это не работает, потому что когда я выбираю один из этих параметров, появляется эта ошибка

неверный аргумент = значение '5' недопустимо для 'index'

Это работает, когда я добавляю последовательные индексы, начинающиеся с 0, но это не то, что я хочу, как я могу добавить нужные индексы к CB без этой проблемы? Я надеюсь, что вы можете помочь мне, спасибо.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Может быть, добавить объект вместо пользовательского индекса?

Ссылаясь на MSDN ComboBox. Документация по элементам

Хотя ComboBox обычно используется для отображения текстовых элементов, вы можете добавить любой объект в ComboBox. Обычно представление объекта в ComboBox представляет собой строку, возвращаемую методом ToString этого объекта. Если вы хотите, чтобы вместо этого отображался элемент объекта, выберите элемент, который будет отображаться, установив для свойства DisplayMember имя соответствующего элемента. Вы также можете выбрать элемент объекта, который будет представлять значение, возвращаемое объектом, установив свойство ValueMember . Для получения дополнительной информации см. ListControl.

Код из Пример документации MSDN ListControl.ValueMember

ArrayList USStates = new ArrayList();
USStates.Add(new USState("Alabama", "AL"));
USStates.Add(new USState("Washington", "WA"));
USStates.Add(new USState("West Virginia", "WV"));
USStates.Add(new USState("Wisconsin", "WI"));
USStates.Add(new USState("Wyoming", "WY"));
ListBox1.DataSource = USStates;
0 голосов
/ 23 января 2019

Вы должны создать словарь (или массив) элементов, назначить его в качестве источника данных для выпадающего списка и установить «DisplayMember» и «ValueMember» в выпадающем списке, например:

Dictionary<int, string> myDictionary = new Dictionary<int, string>();

myDictionary.Add(1, "string");
myDictionary.Add(2, "string2");
myDictionary.Add(4, "string4");

mycb.DataSource = myDictionary.ToArray();

mycb.DisplayMember = "Value";
mycb.ValueMember = "Key";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...