В C # (winforms) как синхронизировать текстовое поле и представление данных, чтобы изменения в одном отображались в другом

2

Здесь нет базы данных, я создаю свой собственный datatable в коде и привязываю его к текстовому окну и datagridview.

Когда я меняю текущую запись в сетке, текстовое поле обновляется до текущего значения.

Но какой лучший способ синхронизировать изменения между значениями в текстовом поле и datagrid. Если я изменю один, то он не изменит другого, если я не перейду к другой записи и обратно.

Я могу сделать это, добавив datagrid.Refresh() в текстовое поле Validated event и, предположительно, что-то в событие CellValidated в datagrid, но похоже, что я ошибаюсь в этом.

Edit:

Основываясь на ответе ниже, мой вопрос должен быть: есть способ уведомлять связанные элементы управления изменениями в DataTable, к которому они привязаны, или должен использовать код BindingList или сделать это вручную.

  • 1
    Кажется, вызывая ds.AcceptChanges (), где ds - мой набор данных в различных проверенных событиях, по крайней мере обновляет другие значения. Не уверен, что это лучший способ.
Теги:
data-binding
textbox
datagridview

1 ответ

2
Лучший ответ

Я предлагаю использовать BindingList<T>, а не DataTable, где T - ваш "бизнес-объект", который представляет каждую запись, отображаемую в сетке. Затем ваш бизнес-объект должен реализовывать INotifyPropertyChanged и загорать NotifyPropertyChanged всякий раз, когда значение в текстовом поле изменяется, связывая желаемое свойство с TextBox.Text или обновление соответствующего свойства выбранного бизнес-объекта, когда срабатывает TextBox.TextChanged.

  • 0
    Спасибо, это интересный подход, который я, вероятно, попробую (однажды!). Но хотелось бы также узнать, как лучше всего использовать датированные данные - действительно, кажется, должен быть простой способ сделать это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню