Member 12609144 Ответов: 2

Как отменить закрывающую форму при загрузке или извлечении данных?


Всем привет

В настоящее время я учусь vb.net, и я изучаю код о закрытии формы, но я получаю некоторые проблемы при обработке формы и закрытии, я имею в виду, что мне нужно показать сообщение ("Пожалуйста, подождите, извлечение данных скоро завершится"), если процесс еще не завершен, например, извлечение данных

Примечание: мой английский не самый сильный

спасибо
Кевин

Что я уже пробовал:

Мне нужно узнать больше , я надеюсь, что это будет хорошая информация для нового парня

2 Ответов

Рейтинг:
2

Bernhard Hiller

Подпишитесь на Closing событие (WindowClosing или FormClosing) формы. Он поставляется с CancelEventArgs которые имеют Cancel собственность. Установить, что имущество True когда вы не можете закрыть форму.


Sergey Alexandrovich Kryukov

В этом случае я проголосовал за 4. Ответ не совсем полный.

Во-первых, вариант использования OnFormClosing не упоминается, но он имеет определенные преимущества. Что еще более важно, свойство CloseReason важно, но часто забывается, поэтому важно указать на него. См. решение 2.

—СА

Рейтинг:
0

Sergey Alexandrovich Kryukov

В дополнение к решению 1:

Альтернатива транспортная обработка FormClosing, вы можете переопределить виртуальный метод System.Windows.Forms.Form.FormClosing:
https://msdn.microsoft.com/en-us/library/system.windows.forms.form.onformclosing%28v=vs.110%29.aspx.

Тип аргументов события один и тот же, FormClosingEventArgs, таким образом, вы контролируете отмену обработки таким же образом, через FormClosingEventArgs.Cancel:
Класс FormClosingEventArgs (System.Окна.Формы)[^].

Обратите внимание на то, что вам лучше проверить FormClosingEventArgs.CloseReason; обычно вам нужно предотвратить закрытие только тогда, когда оно закрывается пользователем через элемент управления формы, поэтому вы должны проверить, является ли причина CloseReason.UserClosing:
FormClosingEventArgs.CloseReason Property (System.Окна.Формы),
Перечисление CloseReason (System.Окна.Формы).

Переопределение FormClosing имеет определенные преимущества по сравнению с обработкой событий. Вот почему: переопределенный код проще и более удобен для обслуживания, и необходимость создания производного типа не является проблемой, потому что типы форм обычно выводятся в приложении в любом случае.

—СА