Как вы можете определить, была ли форма закрыта пользователем или вашим кодом?

У меня есть форма (давайте назовем ее родительской формой), из которой другая "всегда сверху, но не модальная" форма может быть загружена (как диалоговое окно, но не диалоговое окно - пользователь может оставить новую «дочернюю форму» там, где она есть и продолжить работу над родительской формой).

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

if (e.CloseReason == CloseReason.UserClosing)
{
    e.Cancel = true;
    this.Hide();
}

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

В настоящее время я звонюchildForm.Dispose() из родительской формы, которая хорошо очищает, но не дает мне большого контроля.

Однако, если я вызову метод childForm.Close (), e.CloseReason по-прежнему будет "CloseReason.UserClosing".

Есть ли способ отличить пользователя, закрывающего форму, и моего кода (в родительской форме), закрывающего ее?

Ответы на вопрос(1)

Ваш ответ на вопрос