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