netlib.narod.ru< Назад | Оглавление | Далее >

Вариации на ту же тему

Попробуем создать две формы, чтобы лучше понимать, как они создаются.

TwoForms.cs

  //------------------------------------------
  // TwoForms.cs (C) 2001 by Charles Petzold
  //------------------------------------------
  using System.Windows.Forms;

  class TwoForms
  {
      public static void Main()
      {
          Form form1 = new Form();
          Form form2 = new Form();

          form1.Text = "Form passed to Run()";
          form2.Text = "Second form";
          form2.Show();

          Application.Run(form1);

          MessageBox.Show("Application.Run() has returned " +
                          "control back to Main. Bye, bye!",
                          "TwoForms");
      }
  }

Здесь создаются две формы, form1 и form2, им присваиваются разные заголовки, чтобы можно было отличить их друг от друга. Для form2 вызывается метод Show, а form1 передается как параметр методу Application.Run. Когда Application.Run возвращает управление Main, открывается окно сообщений.

Запустите TwoForms пару раз, чтобы посмотреть, что происходит. Если сначала закрыть form2, то с form1 ничего не произойдет. Единственный способ заставить Application.Run вернуть управление и увидеть информационное окно — это закрыть и form1. Но если вы сначала закроете form1, то с экрана исчезнут обе формы, Application.Run вернет управление Main, и откроется окно сообщений.

Так что Application.Run делает еще одну вещь: когда вы закрываете форму, передаваемую как параметр Application.Run, метод закрывает все остальные формы, созданные программой. Если вы не передадите объект Form методу Application.Run (как было в RunFormBadly), то программа должна явно вызвать метод Application.Exit, чтобы заставить Application.Run вернуть управление. Но откуда программе вызывать Application.Exit, если она находится где-то внутри вызова Application.Run? Вскоре вы узнаете, как программы могут устанавливать обработчики событий, возвращающие управление программе и дающие потенциальную возможность вызвать Application.Exit.


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz