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);
if(result == DialogResult.Yes) Application.Exit();
Здесь окно сообщения имеет заголовок "Завершение". Внутри этого окна отображается текст "Остановить программу?" и кнопки Да и Нет.
Результат выполнения метода Show (), который содержит ответ пользователя, присваивается переменной result.
При выполнении следующей строки кода этот ответ проверяется, и от результата проверки зависит дальнейший ход выполнения программы:
if(result == DialogResult.Yes) Application.Exit();
Если пользователь щелкнет на кнопке Да, программа остановится. Это реализуется вызовом метода Application.Exit (), который обеспечивает немедленное завершение программы. В противном случае никакие действия не выполняются, и программа продолжается.
Создание меню.
Главное окно практически всех Windows-приложений включает меню, расположенное вдоль верхней его границы. Оно называется основным.
Основное меню обычно содержит такие категории верхнего уровня, как Файл, Правка и Сервис. Из основного меню можно получить раскрывающиеся меню, содержащие команды, связанные с соответствующей категорией.
При выборе элемента меню генерируется сообщение. Следовательно, чтобы обработать команду меню, программа должна присвоить каждому элементу меню обработчик событий.
Основное меню создается путем комбинации двух классов. Первый класс — MainMenu — инкапсулирует общую структуру меню, а второй — Menultem — отдельный его элемент.
Элемент меню может представлять либо конечное действие (например, Закрыть), либо активизировать другое раскрывающееся меню.
Оба класса — MainMenu и Menultem — наследуют класс Menu. Поскольку меню представляют собой основной ресурс в Windows-программировании, эта тема довольно обширна и включает массу возможностей, связанных с построением меню.
Для создания стандартного меню достаточно освоить основные моменты из этой темы.
При выборе элемента меню генерируется событие Click, которое определено в классе Menultem. Следовательно, чтобы обработать выбор элемента меню, в список обработчиков события Click, связанный с этим элементом, необходимо добавить соответствующий обработчик.
Каждая форма имеет свойство Menu, определенное таким образом:
public MainMenu Menu { get; set; }
По умолчанию этому свойству не присвоено никакое меню. Чтобы отобразить основное меню, это свойство необходимо "настроить" на создаваемое вами меню.
Для создания основного меню выполните следующие действия.
1. Создайте объект класса MainMenu.
2. В объект класса MainMenu добавьте объекты класса Menultem, которые описывают категории верхнего уровня. Эти элементы меню добавляются в коллекцию типа Menultems, связанную с основным меню.
3. Для каждого MenuItem-объекта верхнего уровня добавьте список MenuItem-объектов, который определяет раскрывающееся меню, связанное с элементом меню верхнего уровня. Эти элементы меню добавляются в коллекцию Menultems, связанную с каждым элементом меню верхнего уровня.
4. Добавьте обработчики событий для каждого элемента меню.
5. Присвойте объект класса MainMenu свойству Menu, связанному с формой.
В следующем фрагменте кода показано, как создать меню Файл, которое содержит три команды: Открыть, ЗакрытьиВыйти.
// Создаем объект основного меню.
MyMenu = new MainMenu();
// Добавляем в это меню элемент верхнего уровня.
MenuItem m1 = new MenuItem("Файл");
MyMenu.MenuItems.Add(m1);
// Создание подменю "Файл".
MenuItem subm1 = new MenuItem("Открыть");
M1.MenuItems.Add(subm1);
MenuItem subm2 = new MenuItem("Закрыть");
M1.MenuItems.Add(subm2);
MenuItem subm3 = new MenuItem("Выйти");
M1.MenuItems.Add(subm3);
Приведенная последовательность инструкций начинается с создания объекта класса MainMenu с именем MyMenu. Этот объект будет находиться на верхнем уровне структуры меню.
Затем создается элемент меню m1 с заголовком "Файл". Он добавляется непосредственно к объекту MyMenu.
После этого создается раскрывающееся меню, связанное с командой Файл основного меню. Обратите внимание на то, что элементы раскрывающегося меню добавляются к объекту m1, который является элементом Файл основного меню.
Если один Menultem-объект добавляется к другому, добавляемый объект становится частью раскрывающегося меню, связанного с элементом, к которому добавляется MenuItem-объект. Следовательно, после того как элементы subm1 — subm3 будут добавлены к элементу m1, при выборе команды File отобразится раскрывающееся меню, содержащее команды Открыть, Закрыть и Выйти.
Создав меню, для каждого его элемента необходимо создать связанные с ним обработчики событий.
Как разъяснялось выше, при выборе пользователем команды меню генерируется событие Click. Поэтому при выполнении следующей последовательности инструкций элементам subml — subm3 будут назначены соответствующие обработчики событий.
// Добавляем обработчики событий для элементов меню.
subm1.Click += new EventHandler(MMOpenClick);
subm2.Click += new EventHandler(MMCloseClick);
subm3.Click += new EventHandler(MMExitClick);
Таким образом, если пользователь выберет команду Выйти, выполнится обработчик событий MMExitClick ().
Наконец, свойству Menu формы нужно присвоить объект класса MainMenu:
// Назначаем меню форме.
Menu = MyMenu;
После выполнения этой инструкции окно будет отображаться вместе с меню, при выборе команд которого будут вызываться соответствующие обработчики событий.
Следующая программа демонстрирует создание основного меню и обработку событий, связанных с выбором команд меню.
// listing 6
// Добавляем основное меню.
Using System;