Подтверждение перед закрытием - PullRequest
4 голосов
/ 08 июня 2010

чистая форма окна приложения.У меня есть поле со списком и текстовое поле и кнопка закрытия окна.Теперь, если я внесу какие-либо изменения в поле со списком или текстовое поле и нажму кнопку закрытия окна, он должен предложить пользователю сохранить изменения. Если изменения не внесены (пользователь просто запустит приложение, не вносит никаких изменений)тогда это не должно подсказывать пользователю.Он должен закрыться напрямую .. Как я могу это сделать?

Ответы [ 3 ]

4 голосов
/ 08 июня 2010

Переопределите метод OnClosing вашей формы (или присоедините его к событию закрытия). В обработчике проверьте наличие изменений и отобразите окно сообщения для пользователя. Если вы не хотите, чтобы форма закрывалась, просто установите для свойства e.Cancel значение false перед возвратом.

4 голосов
/ 08 июня 2010

Простой способ сделать это - добавить в форму элемент dirty, для которого я устанавливаю значение true всякий раз, когда что-либо меняется, а затем проверять его при закрытии формы.

1 голос
/ 08 июня 2010

Один из способов - сохранить флаг bool с именем _changed или что-то в этом роде в качестве переменной-члена в вашей форме. Затем в событии TextChanged TextBox и в событии SelectedIndexChanged ComboBox вы просто устанавливаете _changed = true.

Затем, незадолго до закрытия формы, вы запрашиваете у пользователя значение _changed, равное true.

Edit:

Если у вас есть много элементов управления TexBox в форме, вы можете подключить их все к одному и тому же обработчику событий TextChanged. Затем, независимо от того, какой текст TextBox изменился, _changed будет установлен в true.

Затем сделайте то же самое с несколькими элементами управления ComboBox и одним событием SelectedIndexChanged.

Если у вас действительно много элементов управления, а не подключать каждый из них вручную, вы даже можете написать метод, который рекурсивно перебирает коллекцию Controls вашей формы и подключает каждый тип элемента управления к соответствующему обработчику событий. Затем вы можете повторно использовать этот метод в более чем 1 форме, чтобы сэкономить много времени и затрат на обслуживание, поскольку, когда вы добавляете новые элементы управления, об этом автоматически заботятся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...