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?