Ответ 1
Насколько я понял, ваш вопрос заключается в том, чтобы отменить изменения, внесенные в ваш List<Customer>
через txtb_name
. По умолчанию DataBindings
автоматически применяет изменения, когда проверка прошла. Вы можете управлять DataSourceUpdateMode
, чтобы изменить это поведение по-разному, в зависимости от вашей реализации:
-
Прежде чем устанавливать какие-либо привязки на
txtb_name
(должно быть возможно с тем, как написан ваш код):txtb_name.DataBindings.DefaultDataSourceUpdateMode = DataSourceUpdateMode.Never;
-
После установки привязок на
txtb_name
(также возможно с вашим кодом):foreach( Binding b in txtb_name.DataBindings) { b.DataSourceUpdateMode = DataSourceUpdateMode.Never; }
-
После того, как вы установили привязки с помощью BindingManagerBase (CurrencyManager или PropertyManager) - более общий подход, поскольку он позволяет обрабатывать многие элементы управления одним выстрелом, может пригодиться когда ваш проект развивается.
foreach(Binding b in bindingManager.Bindings) { b.DataSourceUpdateMode = DataSourceUpdateMode.Never; }
Для сложных настроек вы можете использовать ResumeBinding и SuspendBinding BindingManagerBase, они могут быть переопределить для обеспечения пользовательского поведения при проверке, например, если несколько полей должны быть проверены как целая логическая часть, а не поочередно.
Обратите внимание, что даже если вы установите DataSourceUpdateMode = DataSourceUpdateMode.Never
, всегда будет одно обновление, в соответствии с MSDN (см. раздел "Примечания" )
Даже если для режима обновления установлено значение Никогда, источником данных будет обновляется, когда привязка сначала создается, поэтому, по крайней мере, одно обновление всегда будет иметь место.
Если это неприемлемо для вас, т.е. вы создаете приложение корпоративного класса с очень строгими требованиями, я предлагаю обрабатывать все вручную - прекратите использование DataBindings
.
Кредит за подсказку DataSourceUpdateMode
отправляется Фредерику Гейзелю за его статью о WinForms: DataBinding в аннулируемой форме диалога.