Здесь нет базы данных, я создаю свой собственный datatable в коде и привязываю его к текстовому окну и datagridview.
Когда я меняю текущую запись в сетке, текстовое поле обновляется до текущего значения.
Но какой лучший способ синхронизировать изменения между значениями в текстовом поле и datagrid. Если я изменю один, то он не изменит другого, если я не перейду к другой записи и обратно.
Я могу сделать это, добавив datagrid.Refresh() в текстовое поле Validated event и, предположительно, что-то в событие CellValidated в datagrid, но похоже, что я ошибаюсь в этом.
Edit:
Основываясь на ответе ниже, мой вопрос должен быть: есть способ уведомлять связанные элементы управления изменениями в DataTable, к которому они привязаны, или должен использовать код BindingList или сделать это вручную.
Я предлагаю использовать BindingList<T>
, а не DataTable
, где T
- ваш "бизнес-объект", который представляет каждую запись, отображаемую в сетке. Затем ваш бизнес-объект должен реализовывать INotifyPropertyChanged
и загорать NotifyPropertyChanged
всякий раз, когда значение в текстовом поле изменяется, связывая желаемое свойство с TextBox.Text
или обновление соответствующего свойства выбранного бизнес-объекта, когда срабатывает TextBox.TextChanged
.