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 | < Назад | Оглавление | Далее > |