W jaki sposób można ustalić, czy formularz został zamknięty przez użytkownika lub kod?

Mam formularz (nazwijmy go formą nadrzędną), z którego można załadować inny formularz „zawsze na wierzchu, ale nie modalny” (Podobnie jak okno dialogowe, ale nie okno dialogowe - użytkownik może zostawić nowy „formularz podrzędny”, gdzie jest i kontynuować pracować nad formularzem nadrzędnym).

Przy pierwszym otwarciu formularza potomnego użytkownik ładuje i wyświetla dane. Jeśli zamkną formularz, przechwytuję zamknięcie i po prostu ukrywam formularz - aby następnym razem, gdy go otworzą, nie będziemy musieli przeładowywać danych (to nie dane, które zmieniają się bardzo, jeśli w ogóle).

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

Później, gdy formularz nadrzędny zostanie zamknięty, chcę zmusić formularz podrzędny do prawidłowego zamknięcia - uruchamiając kod w jego formie podstawowej, aby zapisać jego lokalizację i rozmiar na następny raz.

Obecnie dzwonięchildForm.Dispose () od formy rodzica, która ładnie oczyszcza rzeczy, ale nie daje mi dużo kontroli.

Jeśli jednak wywołam metodę childForm.Close (), e.CloseReason jest nadal „CloseReason.UserClosing”.

Czy istnieje sposób na odróżnienie użytkownika zamykającego formularz od mojego kodu (w formularzu nadrzędnym) zamykającego go?

questionAnswers(1)

yourAnswerToTheQuestion