Как проверить ввод данных формы перед навигацией с помощью WinForms в .NET с использованием DataBindingNavigator? - PullRequest
0 голосов
/ 31 августа 2011

Я только начинаю разработку .NET с C #. Хотя мне самому становится комфортно с языком, мне нужна помощь с особенностями фреймворка.

Я создаю приложение Windows Forms для замены простой базы данных Access. У меня подключен источник данных, пропущены элементы управления в форме, установлена ​​базовая логика, никаких проблем нет Даже выяснил, что мне нужно вручную сохранить данные обратно в базу данных, используя tableAdapterManager.UpdateAll (...) или аналогичный.

Моя текущая проблема, решение которой я не смог найти после долгих поисков, состоит в том, как проверить мои данные перед тем, как позволить пользователю оставить текущую запись.

Сценарий:

Пользователь нажимает «Добавить», чтобы получить новую запись, заполняет некоторые данные, но не заполняет одно из обязательных полей. Затем пользователь переходит к другой записи, не нажимая кнопку «Сохранить». Приложение выдает исключение, и запись теряется.

Какое событие я могу перехватить или какую функцию мне нужно переопределить, чтобы выполнить предварительную навигацию для проверки данных моей формы и отменить навигацию, если данные каким-либо образом недействительны?

Ответы [ 2 ]

0 голосов
/ 31 августа 2011

Любая форма Windows может обрабатывать событие FormClosing , где вы можете поместить свой код проверки.Событие FormClosing имеет объект FormClosingEventArgs, поэтому в случае неудачной проверки вы можете установить для его свойства Cancel значение True, чтобы предотвратить переход.

EDIT

Для формыкоторый использует объект BindingNavigator, вы должны иметь возможность обрабатывать его событие «Validating» для достижения аналогичного эффекта.В Validating EventHandler вашего BindingNavigator просто установите аргумент Cancel для его объекта CancelEventArgs на случай, если какая-либо из ваших валидаций окажется неудачной.

0 голосов
/ 31 августа 2011

Если вы используете объект datagridview для представления значений, вам нужно обработать событие RowValidating

...