- •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
702 Часть III. Применение языка с#
По умолчанию этому свойству не присвоено никакое меню. Чтобы отобразить ос-
новное меню, это свойство необходимо "настроить" на создаваемое вами меню.
Для создания основного меню выполните следующие действия.
1. Создайте объект класса MainMenu.
2. В объект класса MainMenu добавьте объекты класса Menultem, которые описы-
вают категории верхнего уровня. Эти элементы меню добавляются в коллек-
цию типа Menultems, связанную с основным меню.
3. Для каждого Menu I t em-объекта верхнего уровня добавьте список Menu I t em-
объектов, который определяет раскрывающееся меню, связанное с элементом
меню верхнего уровня. Эти элементы меню добавляются в коллекцию
Menultems, связанную с каждым элементом меню верхнего уровня.
4. Добавьте обработчики событий для каждого элемента меню.
5. Присвойте объект класса MainMenu свойству Menu, связанному с формой.
В следующем фрагменте кода показано, как создать меню Файл, которое содержит
три команды: Открыть, Закрыть и Выйти.
// Создаем объект основного меню.
MainMenu MyMenu = new MainMenu();
// Добавляем в это меню элемент верхнего уровня.
Menultem ml = new Menultem("Файл");
MyMenu.Menultems.Add(ml);
// Создаем подменю "Файл".
Menultem subml = new Menultem("Открыть");
ml.Menultems.Add(subml);
Menultem subm2 = new Menultem("Закрыть");
ml.Menultems.Add(subm2);
Menultem subm3 = new Menultem("Выйти");
ml.Menultems.Add(subm3);
Эта последовательность инструкций заслуживает внимательного рассмотрения.
Она начинается с создания объекта класса MainMenu с именем MyMenu. Этот объект
будет находиться на верхнем уровне структуры меню. Затем создается элемент меню
ml с заголовком "Файл". Он добавляется непосредственно к объекту MyMenu. После
этого создается раскрывающееся меню, связанное с командой Файл основного меню.
Обратите внимание на то, что элементы раскрывающегося меню добавляются к объ-
екту ml, который является элементом Файл основного меню. Если один Menultem-
объект добавляется к другому, добавляемый объект становится частью раскрывающе-
гося меню, связанного с элементом, к которому добавляется Menu I t em-объект. Следо-
вательно, после того как элементы subml—subm3 будут добавлены к элементу ml, при
выборе команды File отобразится раскрывающееся меню, содержащее команды
Открыть, Закрыть и Выйти.
Создав меню, для каждого его элемента необходимо создать связанные с ним об-
работчики событий. Как разъяснялось выше, при выборе пользователем команды ме-
ню генерируется событие Click. Поэтому при выполнении следующей последова-
тельности инструкций элементам subml—subm3 будут назначены соответствующие
обработчики событий.
// Добавляем обработчики событий для всех элементов меню.
subml.Click += new EventHandler(MMOpenClick);
subm2.Click += new EventHandler(MMCloseClick) ;
subm3.Click += new EventHandler(MMExitClick) ;
Глава 25. Создание Windows-приложений 703
Таким образом, если пользователь выберет команду Выйти, выполнится обработ-
чик событий MMExitClick ().
Наконец, свойству Menu формы нужно присвоить объект класса MainMenu:
1 Menu = MyMenu;
После выполнения этой инструкции окно будет отображаться вместе с меню, при
выборе команд которого будут вызываться соответствующие обработчики событий.
Следующая программа демонстрирует создание основного меню и обработку собы-
тий, связанных с выбором команд меню.
// Добавляем основное меню.
using System;
using System.Windows.Forms;
class MenuForm : Form {
MainMenu MyMenu;
public MenuForm() {
Text = "Добавление меню";
// Создаем объект основного меню.
MainMenu MyMenu = new MainMenu();
// Добавляем в это меню элемент верхнего уровня.
Menultem ml = new Menultem("Файл");
MyMenu.MenuIterns.Add(ml);
Menultem m2 = new Menultem("Сервис");
MyMenu.Menulterns.Add(m2);
// Создаем подменю Файл.
Menultem subml = new Menultem("Открыть");
ml.MenuIterns.Add(subml) ;
Menultem subm2 = new Menultem("Закрыть");
ml.Menulterns.Add(subm2) ;
Menultem subm3 = new Menultem("Выйти");
ml.MenuIterns.Add(subm3);
// Создаем подменю "Сервис".
Menultem subm4 = new Menultem("Координаты");
m2.Menulterns.Add(subm4);
Menultem subm5 = new Menultem("Изменить размер");
m2.MenuIterns.Add(subm5);
Menultem subm6 ='new Menultem("Восстановить");
m2.Menultems.Add(subm6);
// Добавляем обработчики событий для элементов меню,
subml.Click += new EventHandler(MMOpenClick);
subm2.Click += new EventHandler(MMCloseClick);
subm3.Click += new EventHandler(MMExitClick);
subm4.Click += new EventHandler(MMCoordClick);
subm5.Click += new EventHandler(MMChangeClick);
subm6.Click += new EventHandler(MMRestoreClick);
