Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шилгд WinForms.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
49.67 Кб
Скачать

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; }