В C # WinApp, как я могу добавить текст и значение для элементов моего ComboBox? Я выполнил поиск, и обычно в ответах используется «Привязка к источнику» ... но в моем случае у меня нет готового источника привязки в моей программе ... Как я могу сделать что-то вроде этого:
combo1.Item[1] = "DisplayText";
combo1.Item[1].Value = "useful Value"
источник
Вы можете использовать анонимный класс следующим образом:
ОБНОВЛЕНИЕ: Хотя приведенный выше код будет правильно отображаться в поле со списком, вы не сможете использовать
SelectedValue
илиSelectedText
свойстваComboBox
. Чтобы использовать их, свяжите поле со списком, как показано ниже:источник
List<Object> items = new List<Object>();
Затем я смог использовать методitems.Add( new { Text = "report A", Value = "reportA" } );
внутри цикла.comboBox.SelectedItem.GetType().GetProperty("Value").GetValue(comboBox.SelectedItem, null)
DataSource
вы можете использовать свойстваSelectedValue
илиSelectedText
поля со списком, поэтому нет необходимости выполнять какое-либо специальное приведение.Вы должны использовать
dynamic
объект для разрешения элемента комбинированного списка во время выполнения.источник
Вы можете использовать
Dictionary
Object вместо создания пользовательского класса для добавления текста и значения вCombobox
.Добавить ключи и значения в
Dictionary
объекте:Привязать исходный объект Dictionary к
Combobox
:Получить ключ и значение:
Полный Источник: Combobox Text nd Value
источник
Это один из способов, который только что пришел в голову:
combo1.Items.Add(new ListItem("Text", "Value"))
И чтобы изменить текст или значение элемента, вы можете сделать это так:
В Windows Forms нет класса ListItem . Он существует только в ASP.NET , поэтому вам нужно будет написать собственный класс перед его использованием, так же, как @Adam Markowitz в своем ответе .
Также проверьте эти страницы, они могут помочь:
Как добавить элемент в комбинированный список
Как добавить и удалить элементы из элементов управления ComboBox, ListBox или CheckedListBox в Windows Forms
источник
Не знаю, сработает ли это для ситуации, описанной в оригинальном посте (не говоря уже о том, что это два года спустя), но этот пример работает для меня:
Чтобы вывести свое значение обратно, вам нужно привести свойство SelectedItem к объекту DictionaryEntry, а затем вы можете оценить его свойства Key и Value. Например:
источник
источник
Если кому-то все еще интересно это, вот простой и гибкий класс для элемента комбинированного списка с текстом и значением любого типа (очень похоже на пример Адама Марковица):
Использование
<T>
лучше, чем объявлениеvalue
какobject
, потому что сobject
что тогда вам придется отслеживать тип, который вы использовали для каждого элемента, и приводить его в свой код, чтобы использовать его правильно.Я уже давно использую его в своих проектах. Это действительно удобно.
источник
Мне понравился ответ fab, но я не хотел использовать словарь для моей ситуации, поэтому я заменил список кортежей.
источник
Пример использования DataTable:
источник
Вы можете использовать этот код для вставки некоторых элементов в комбинированное окно с текстом и значением.
C #
XAML
источник
В дополнение к ответу Адама Марковица, здесь представлен универсальный способ (относительно) простого задания
ItemSource
значений поля со спискомenums
, при этом показывая атрибут «Описание» пользователю. (Вы можете подумать, что все захотят сделать это так, чтобы это был .NET- лайнер, но это не так, и это самый элегантный способ, который я нашел).Сначала создайте этот простой класс для преобразования любого значения Enum в элемент ComboBox:
Во-вторых, в вашем
OnLoad
обработчике событий вы должны установить источник вашего поля со списком, чтобы быть списком,ComboEnumItems
основанным на каждомEnum
в вашемEnum
типе. Это может быть достигнуто с Linq. Затем просто установитеDisplayMemberPath
:Теперь пользователь будет выбирать из списка ваших удобных для пользователя
Descriptions
, но то, что они выберут, будетenum
значением, которое вы можете использовать в коде. Чтобы получить доступ к выбору пользователя в коде,comboBoxUserReadable.SelectedItem
будетComboEnumItem
иcomboBoxUserReadable.SelectedValue
будетEMyEnum
.источник
Вы можете использовать универсальный тип:
Пример использования простого типа int:
источник
У меня была та же проблема, что я сделал, это добавить новый
ComboBox
содержащее только значение в том же индексе, что и первый, а затем, когда я изменяю основную комбинацию, индекс во втором изменяется одновременно, а затем я беру значение второй комбо и использовать его.Это код:
источник
Класс создания:
Коды Form1:
источник
Вот как это делает Visual Studio 2013:
Один элемент:
Несколько предметов:
Нет необходимости делать переопределения класса или включать что-либо еще. А да то
comboBox1->SelectedItem
иcomboBox1->SelectedIndex
звонки еще работают.источник
Это похоже на некоторые другие ответы, но компактно и позволяет избежать преобразования в словарь, если у вас уже есть список.
Учитывая
ComboBox
"комбобокс" на форме окна и классSomeClass
соstring
свойством типаName
,Это означает, что SelectedItem является
SomeClass
объектомlist
, и каждый элементcombobox
будет отображаться с использованием его имени.источник
DisplayMember
раньше ... Я всегда забываю, что это существует. Я привык к решению, которое нашел до того, как обратил внимание на это свойство, и оно не всегда поможет. Не все классы имеютName
илиTag
свойство, или иметь свойство строки , которые можно было бы использовать произвольно в качестве отображаемого текста.base.Method();
), а также вам придется создать производный класс для каждого отдельного типа вы хотите добавить в поля со списком или списки. Класс, который я сделал, гибкий, вы можете использовать его с любым типом без лишних усилий. Посмотрите мой ответ ниже и скажите, что вы думаете :)Это очень простое решение для оконных форм, если все, что нужно, это конечное значение в виде (строки). Имена элементов будут отображаться в поле со списком, и выбранное значение можно будет легко сравнить.
и на обработчике события получить значение (строку) выбранного значения
источник
Лучшее решение здесь;
Восстановить данные
источник