
- •690 , Часть III. Применение языка с#
- •Глава 25. Создание Windows-приложений 691
- •692 Часть III. Применение языка с#
- •Глава 25. Создание Windows-приложений 693
- •694 Часть III. Применение языка с#
- •Глава 25. Создание Windows-приложений 695
- •696 Часть III. Применение языка с #
- •Глава 25. Создание Windows-приложений 697
- •698 Часть hi. Применение языка с#
- •Глава 25. Создание Windows-приложений 699
- •700 Часть III. Применение языка с#
- •Глава 25. Создание Windows-приложений 701
- •702 Часть III. Применение языка с#
- •Глава 25. Создание Windows-приложений 703
- •704 • Часть III. Применение языка с#
- •Глава 25. Создание Windows-приложений 705
700 Часть III. Применение языка с#
// Создаем кнопки.
MyButton = new Button();
MyButton.Text = "Щелкните";
MyButton.Location = new Point(100, 200);
StopButton = new Button();
StopButton.Text = "Стоп";
StopButton.Location = new Point(100, 100);
// Добавляем обработчики событий.
MyButton.Click += new EventHandler(MyButtonClick);
Controls.Add(MyButton);
StopButton.Click += new EventHandler(StopButtonClick)
Controls.Add(StopButton);
[STAThread]
public static void Main() {
ButtonForm skel = new ButtonFormO ;
Application.Run(skel);
// Обработчик событий для кнопки MyButton.
protected void MyButtonClick(object who, EventArgs e) {
if(MyButton.Top == 200)
MyButton.Location = new Point(10, 10);
else
MyButton.Location = new Point(100, 200);
}
// Обработчик событий для кнопки StopButton.
protected void StopButtonClick(object who, EventArgs e) {
// Если пользователь ответит щелчком на кнопке Yes,
// программа будет завершена.
DialogResult result = MessageBox.Show(
"Остановить программу?",
"Завершение",
MessageBoxButtons.YesNo);
if(result == DialogResult.Yes) Application.Exit();
Рассмотрим, как используется окно сообщений. Нетрудно заметить, что в конст-
руктор ButtonForm добавлена вторая кнопка. Эта кнопка содержит текст "Стоп", и ее
обработчик событий связывается с методом StopButtonClick ().
В обработчике StopButtonClick () с помощью следующей инструкции отобража-
ется окно сообщений:
// Если пользователь ответит щелчком на кнопке Yes,
// программа будет завершена.
DialogResult result = MessageBox.Show(
"Остановить программу?",
"Завершение",
MessageBoxButtons.YesNo) ;
Глава 25. Создание Windows-приложений 701
Здесь окно сообщения имеет заголовок "Завершение". Внутри этого окна отобра-
жается текст "Остановить программу?" и кнопки Да и Нет. Результат выполнения ме-
тода Show (), который содержит ответ пользователя, присваивается переменной
r e s u l t . При выполнении следующей строки кода этот ответ проверяется, и от ре-
зультата проверки зависит дальнейший ход выполнения программы:
I i f ( r e s u l t == D i a l o g R e s u l t . Y e s ) A p p l i c a t i o n . E x i t ( ) ;
Если пользователь щелкнет на кнопке Да, программа остановится. Это реализуется
вызовом метода Application. Exit О, который обеспечивает немедленное заверше-
ние программы. В противном случае никакие действия не выполняются, и программа
продолжается.
Результат выполнения этой программы показан на рис. 25.4.
Остановить программу?
Да 1 Нет
Рис. 25.4. Результат выполнения программы,
использующей окно сообщений
Создание меню
Главное окно практически всех Windows-приложений включает меню, располо-
женное вдоль верхней его границы. Оно называется основным. Основное меню обыч-
но содержит такие категории верхнего уровня, как Файл, Правка и Сервис. Из основ-
ного меню можно получить раскрывающиеся меню, содержащие команды, связанные
с соответствующей категорией. При выборе элемента меню генерируется сообщение.
Следовательно, чтобы обработать команду меню, программа должна присвоить каж-
дому элементу меню обработчик событий.
Основное меню создается путем комбинации двух классов. Первый класс —
MainMenu — инкапсулирует общую структуру меню, а второй — Menultem — отдель-
ный его элемент. Элемент меню может представлять либо конечное действие
(например, Закрыть), либо активизировать другое раскрывающееся меню. Оба клас-
са — MainMenu и Menultem — наследуют класс Menu. Поскольку меню представляют
собой основной ресурс в Windows-программировании, эта тема довольно обширна и
включает массу возможностей, связанных с построением меню. К счастью, для созда-
ния стандартного меню достаточно освоить основные моменты из этой темы.
При выборе элемента меню генерируется событие Click, которое определено в
классе Menultem. Следовательно, чтобы обработать выбор элемента меню, в список
обработчиков события Click, связанный с этим элементом, необходимо добавить со-
ответствующий обработчик.
Каждая форма имеет свойство Menu, определенное таким образом:
public MainMenu Menu { get; set; }