Winforms OnFormClosing и Disposing / Close - PullRequest
0 голосов
/ 07 мая 2020

У меня есть форма, в которой я хочу переопределить метод OnFormClosing. Должен ли этот метод явно вызывать Close или Dispose?

Вот моя родительская форма

public partial class MyParentForm : Form
{

   // Other methods

   public void RunChildForm()
   {
      Hide();

      var child = new MyChildForm()
      {
         Owner = this
      };

      child.Play();
   }

}

Вот моя дочерняя форма

public partial class MyChildForm : Form
{

   // Other methods

   public void Play()
   {
      Show();
   }

   protected override void OnFormClosing(FormClosingEventArgs e)
   {

      // WHAT IS THE CORRECT ORDER?
      // Some code
      ...

      // Display the owner form
      Owner.Show(); 

      base.OnFormClosing(e);

      // Here, is the Form Disposed/Closed? I am unsure if this is necessary.
      Close();
      Dispose();
   }
}

Каким должен быть порядок казнь быть? Я хочу очистить дочернюю форму, а затем снова отобразить родительскую.

1 Ответ

0 голосов
/ 10 мая 2020

Вероятно, вы действительно не хотите «переопределять метод OnFormClosing».

Исходя из того, что вы сказали, лучше всего просто написать обработчик события для «FormClosing».

В стране Java (по крайней мере, до Java 8) вы обычно создавали анонимный класс, который отменял методы, которые вы хотели настроить.

В C # /. Net -land - и особенно с обработчиками событий Winforms - MSVS упрощает использование делегатов

...