Как связать DataBinding от ComboBox с типом List<>

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
garmayev
Сообщения: 26
Зарегистрирован: 19 дек 2013, 17:40
Откуда: Irkutsk
Контактная информация:

06 апр 2018, 11:07

Добрый день!

Имеется:
  • Код

    Некий список с классом Template

    Код: Выделить всё

    public class Template {
        public Title;
        public Name;
    }
    

    Код: Выделить всё

    List<Template> templ = new List<Template>();
    
    Данные в данном списке формируются
  • Форма

    На форме есть ComboBox в который я хочу добавить все значения из этой коллекции(списка?)
  • Пример:

    Код: Выделить всё

    [0] Template 
        [0] Title = "Title for Example1"
        [1] Name = "Example1"
    [1] Template
        [0] Title = "Title for Example2"
        [1] Name = "Example2"
    
Требуется добавить в список ComboBox.Items значения "Title for Example1" и "Title for Example2"

Как это возможно реализовать?

P.S.^ Прощу прощения, если написал не в тот раздел (Что-то не нашел раздела для C#)
Skwoogey
Сообщения: 63
Зарегистрирован: 11 янв 2016, 02:25

06 апр 2018, 14:13

Есть методы Add и AddRange. Если использовать Add, наверное, имеет смысл посмотреть еще на это.
garmayev
Сообщения: 26
Зарегистрирован: 19 дек 2013, 17:40
Откуда: Irkutsk
Контактная информация:

06 апр 2018, 14:21

Skwoogey писал(а):Есть методы Add и AddRange. Если использовать Add, наверное, имеет смысл посмотреть еще на это.

Спасибо за ответ.

Насколько я понял, если идти через метод Add(), то при изменении количества значений Template.Title все останется так же, как и было введено изначально, в то время как, если связать ComboBox через DataBinding все будет происходить ПОЧТИ сразу (конечно, там идут свои методы обработки, не спорю)

Конечно, можно написать свой метод Update (или как он там в Visual Studio обзывается), но это будет (на мой взгляд) перегрузка объекта.

P.S.: Поправьте, если я ошибаюсь =)
Skwoogey
Сообщения: 63
Зарегистрирован: 11 янв 2016, 02:25

06 апр 2018, 15:45

Можно через DataSource и BindingList

Код: Выделить всё

    BList = new BindingList<sample>();

    comboBox1.DataSource = BList;
    comboBox1.ValueMember = "value";
    comboBox1.DisplayMember = "name";
Свойства класса. Насколько знаю работает только через свойства, но не поля.

Код: Выделить всё

    public string name { get; set; }
    public string value { get; set; }
с DataBindings не работал, но насколько знаю они нужны для двухсторонней связи, а в данном случае связь односторонняя.
Ответить