Como você pode determinar se um formulário foi fechado pelo usuário ou pelo seu código?

Eu tenho um formulário (vamos chamá-lo formulário pai), a partir do qual outro "sempre no topo, mas não modal" formulário pode ser carregado (Como um diálogo, mas não um diálogo - usuário pode deixar o novo "formulário filho" onde está e continuar para trabalhar no formulário pai).

Na primeira vez em que o usuário abre esse formulário filho, alguns dados são carregados e exibidos. Se eles fecharem o formulário, eu realmente interceptarei o fechamento e simplesmente ocultarei o formulário - para que, da próxima vez que ele for aberto, não tenhamos que recarregar os dados (não são dados que mudam muito, se é que são).

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

Mais tarde, quando o formulário pai é fechado, eu quero forçar o formulário filho a fechar corretamente - executando algum código em sua forma básica para armazenar sua localização e tamanho para a próxima vez.

Atualmente eu chamochildForm.Dispose () do formulário pai que limpa tudo bem, mas não me dá muito controle.

No entanto, se eu chamar o método childForm.Close (), o e.CloseReason ainda será "CloseReason.UserClosing".

Existe uma maneira de distinguir entre o usuário que fecha o formulário e meu código (no formulário pai) fechá-lo?

questionAnswers(1)

yourAnswerToTheQuestion