Using System.Windows.Forms;

class MenuForm : Form

{

MainMenu MyMenu;

Public MenuForm()

{

Text = "Добавление меню";

// Создаем объект основного меню.

MyMenu = new MainMenu();

// Добавляем в это меню элемент верхнего уровня.

MenuItem m1 = new MenuItem("Файл");

MyMenu.MenuItems.Add(m1);

MenuItem m2 = new MenuItem("Сервис");

MyMenu.MenuItems.Add(m2);

// Создание подменю "Файл".

MenuItem subm1 = new MenuItem("Открыть");

M1.MenuItems.Add(subm1);

MenuItem subm2 = new MenuItem("Закрыть");

M1.MenuItems.Add(subm2);

MenuItem subm3 = new MenuItem("Выйти");

M1.MenuItems.Add(subm3);

// Создаем подменю "Сервис".

MenuItem subm4 = new MenuItem("Координаты");

M2.MenuItems.Add(subm4);

MenuItem subm5 = new MenuItem("Изменить размер");

M2.MenuItems.Add(subm5);

MenuItem subm6 = new MenuItem("Восстановить");

M2.MenuItems.Add(subm6);

// Добавляем обработчики событий для элементов меню.

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

// Назначаем меню форме.

Menu = MyMenu;

}

[STAThread]

Public static void Main()

{

MenuForm skel = new MenuForm();

Application.Run(skel);

}

// Обработчик для команды меню "Координаты".

Protected void MMCoordClick(object who, EventArgs e)

{

// Создаем строку, которая содержит три координаты.

string size =

String.Format("{0}: {1}, {2}\n{3}: {4}, {5} ",

"Вверху, Слева", Top, Left,

"Внизу, Справа", Bottom, Right);

// Отображаем окно сообщений.

MessageBox.Show(size, "Координаты окна",

MessageBoxButtons.OK);

}

// Обработчик для команды меню "Изменить размер".

Protected void MMChangeClick(object who, EventArgs e)

{

Width = Height = 200;

}

// Обработчик для команды меню "Восстановить".

Protected void MMRestoreClick(object who, EventArgs e)

{

Width = Height = 300;

}

// Обработчик для команды меню "Открыть".

Protected void MMOpenClick(object who, EventArgs e)

{

MessageBox.Show("Неактивная команда", "Заглушка",

MessageBoxButtons.OK);

}

// Другой вариант. Обработчик для команды меню "Открыть".

// using System.Diagnostics; - необходимо подключить в начале модуля

Protected void MMOpenClick(object who, EventArgs e)

{

Process newProc = Process.Start("poster.jpg"); //==

newProc.WaitForExit(); //==

newProc.Close(); //==

}

// Обработчик для команды меню "Закрыть".

Protected void MMCloseClick(object who, EventArgs e)

{

MessageBox.Show("Неактивная командв", "Заглушка",

MessageBoxButtons.OK);

}

// Обработчик для команды меню "Выйти".

Protected void MMExitClick(object who, EventArgs e)

{

DialogResult result = MessageBox.Show("Остановить программу?",

"Завершение",

MessageBoxButtons.YesNo);

if(result == DialogResult.Yes) Application.Exit();

}

}

В этой программе определяется два раскрывающихся меню. Доступ к первому (оно содержит команды Открыть, Закрыть и Выйти) обеспечивается через меню Файл.

Обработчики событий для элементов Открыть и Закрыть представляют собой заглушки, которые не выполняют никаких действий, кроме отображения окна сообщения.

Обработчик элемента Выйти в собственном окне сообщения предлагает пользователю подтвердить его желание завершить программу. Если пользователь ответит щелчком на кнопке Да, программа будет завершена.

Меню Сервис также содержит три элемента: Координаты, Изменить размер и Восстановить.

При выборе команды Координаты в окне сообщения отображаются координаты верхнего левого и нижнего правого углов окна.

Попробуйте переместить окно, а затем с помощью этой команды отобразите его координаты. При каждом перемещении окна в новую позицию его координаты будут изменяться соответствующим образом.

При выборе команды Изменить размер окно программы уменьшается в размере так, чтобы его ширина и высота составляли 200 пикселей. Это реализуется с помощью свойств Width и Height:

public int Width { get; set; }

public int Height { get; set; }

По умолчанию окно имеет размеры 300x300.

При выборе команды Restore окно

возвращается к своему исходному размеру.