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 окно
возвращается к своему исходному размеру.