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

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