Как сохранить значение ячейки DataGridView перед редактированием для отмены?

Я добавляю функцию отмены для DataGridView, используя шаблон проектирования команд.

Чтобы создать EditCommand, мне нужно знать, каким было предыдущее значение ячейки, чтобы я мог повторно ввести его, если пользователь нажмет кнопку отмены.

Я делаю это с помощью событий CellBeginEdit и CellEndEdit.

С помощью CellBeginEdit я сохраняю значение ячейки в частной переменной, а в функции CellEndEdit я использую сохраненное значение для создания EditCommand.

Это работает нормально, но мне интересно, есть ли более разумный способ сделать это. Может быть, событие, которое объединяет предыдущее и новое значение ячейки.

Бонусные баллы, если бы я мог фактически предотвратить обновление DataGridView и позволить EditCommand сделать это.


person mee    schedule 12.09.2011    source источник


Ответы (1)


Недавно я реализовал Undo/Redo в большом приложении WPF и смог извлечь логику Undo/Redo в автономную библиотеку. Это доступно на CodePlex.

Библиотека помогает хранить стек истории, который можно повторно применить, если пользователь решит отменить/повторить действие. Это может заменить ваши личные переменные, а также разрешить несколько элементов в истории отмен.

Документацию и файлы для загрузки можно найти по адресу http://muf.codeplex.com/.

person NathanAW    schedule 12.09.2011
comment
Я ценю это предложение, но я хотел бы продолжать использовать дизайн Command. Кроме того, у меня уже есть стек для отмены/повтора. Проблема в том, какие события использовать. - person mee; 12.09.2011
comment
Вы смотрели в BindingGroup? Это то, что DataGrid использует для управления и применения значений. Если вы хотите управлять вещами на уровне строки (а не на уровне ячейки) или если вы хотите изменить поведение, связанное с фиксацией привязок, BindingGroup может быть хорошим выбором. - person NathanAW; 12.09.2011