Я экспериментирую и изучаю приложение Windows Forms, и я не могу понять конструкцию привязки. Согласно документации MSDN: - Вы можете указать экземпляр любого из следующих классов для источника данных:
DataSet
Таблица данных
DataView
DataViewManager
BindingSource
Итак, у меня есть простой код для понимания этой конструкции.
Я инициализировал простую форму окна со списком listBox1 и DataTable data_table.
static DataTable data_table = new DataTable("ParentTable");
DataColumn column;
DataRow row;
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "id";
column.ReadOnly = false;
column.Unique = true;
// Add the Column to the DataColumnCollection.
data_table.Columns.Add(column);
for (int i = 0; i <= 2; i++)
{
row = data_table.NewRow();
row["id"] = i;
data_table.Rows.Add(row);
}
может напрямую связываться с DataSource с помощью.
listBox1.DataSource=new BindingSource(data_table , null);
listBox1.ValueMemeber = "id";
Но когда я использую следующее
Binding myBinding = new Binding("DataSource", data_table, "id");
form_m.listBox1.DataBindings.Add(myBinding);
Я получаю исключение
System.ArgumentException: Complex DataBinding accepts as a data source either an IList or an IListSource
Я буду очень признателен, если кто-нибудь сможет мне с этим помочь.
Если это действительно Winforms, BindingSource, вероятно, то, что вы хотите использовать - или вообще ничего, потому что DataTable будет работать





Вы используете перегрузку конструктора с тремя аргументами Привязка (Строка, Объект, Строка)
Где параметры
Имя свойства
- Имя свойства элемента управления для привязки.
- DataSource в твоем футляре
источник данных
- Объект, представляющий источник данных.
- Это основной источник данных, обратите внимание, что это не источник данных, который будет привязан к List.Box.DataSource.
dataMember
- Свойство или список для привязки.
- Это имя свойства в основном источнике данных, значение которого будет привязано к DataSource элемента управления. Это значение должно быть IList или IListSource.
Установить ListBox.DataSource можно без лишних привязок
listBox.DataSource = myDataTable;
Проверить ссылку: Привязка данных Windows Forms
Должно быть достаточно информации о том, как вы можете использовать привязку данных, и если вы рассмотрите примеры, вы получите довольно хорошее представление о том, как вы можете использовать привязку данных в соответствии с вашими требованиями.
Спасибо за ответ. Я все еще не могу найти способ использовать конструкцию Binding. Я знаю, что могу использовать BindingSource, но я хотел бы узнать, как работает эта конструкция Binding. Также меня интересует использование DataSourceUpdateMode
@ user2288650, проверьте ссылку, которую я добавил в ответ.
Спасибо - Фабио, я прочитал документацию и могу без проблем получить привязку для работы с Textbox. Это просто список, который не работает,
Никаких дополнительных привязок не требуется. Вы можете назначить Список, массив, таблицы для Источник данных, а также предоставить DisplayMember и ValueMember, когда вы используете Список объектов или таблиц как Источник данных, если вы используете одномерный массив, тогда вам не нужно предоставлять DisplayMember и ValueMember.
listbox1.DataSource = data_table;
listbox1.ValueMember = "id";
listbox1.DisplayMember = "id";
Спасибо за ответ. Я просто пытаюсь понять, как работает этот конструктор привязки
Обратите внимание, что страница справки по тегам явно указывает: «Избегайте вставки тегов в заголовки в любом из следующих форматов:» ... «[тег]: [название вопроса]»