Я хочу подключить BindingSource
к списку объектов класса, а затем значение объектов к ComboBox.
Кто-нибудь может подсказать, как это сделать?
public class Country
{
public string Name { get; set; }
public IList<City> Cities { get; set; }
public Country()
{
Cities = new List<City>();
}
}
это мой класс, и я хочу привязать его name
поле к BindingSource, который затем может быть связан с ComboBox
c#
winforms
data-binding
combobox
Мобин
источник
источник
Ответы:
Поскольку вы имеете в виду поле со списком, я предполагаю, что вы не хотите использовать двустороннюю привязку данных (если да, посмотрите на использование a
BindingList
)Для того, чтобы найти страну , выбранную в связанном поле со списком, вы могли бы сделать что - то вроде:
Country country = (Country)comboBox1.SelectedItem;
.Если вы хотите, чтобы ComboBox обновлялся динамически, вам необходимо убедиться, что структура данных, которую вы установили в качестве
DataSource
инструментовIBindingList
; одна такая структураBindingList<T>
.Совет: убедитесь, что вы привязываете
DisplayMember
к свойству класса, а не к общедоступному полю. Если ваш класс использует,public string Name { get; set; }
он будет работать, но если он использует,public string Name;
он не сможет получить доступ к значению и вместо этого будет отображать тип объекта для каждой строки в поле со списком.источник
bindingSource1
заявление?comboBox1.DataSource = bindingSource1.DataSource;
правильно? или так должно бытьcomboBox1.DataSource = bindingSource1;
?Для справки есть 2 способа использовать ComboBox / ListBox.
1) Добавьте объекты Country в свойство Items и выберите Country как Selecteditem. Чтобы использовать это, вы должны переопределить ToString of Country.
2) Используйте DataBinding, установите DataSource в IList (List <>) и используйте DisplayMember, ValueMember и SelectedValue
Для 2) вам сначала понадобится список стран
А затем в SelectionChanged,
источник
бум.
источник
Попробуйте что-то вроде этого:
И если вы используете WebForms, вам нужно будет добавить эту строку:
источник
Это код, который я использую сейчас.
источник
Если вы используете ToolStripComboBox, нет открытого источника данных (.NET 4.0):
источник
ToolstripComboBox.ComboBox.DataSource
. ПохожеToolstripComboBox
это обертка для нормальногоComboBox
.