Итак, меню у нас есть, а вот как обрабатывать события этого меню? Давайте посмотрим код, который умеет это делать.
using System; using System.Windows.Forms; using System.Drawing; class MyForm : AppForm { public static void Main() { Application.Run(new MyForm()); } } class AppForm : Form { public AppForm() { MainMenu mnuFileMenu = new MainMenu(); this.Menu = mnuFileMenu; MenuItem MenuItemFile = new MenuItem("&File"); MenuItem MenuNew = new MenuItem("New",new System.EventHandler(this.MenuNew_Click)); MenuItemFile.MenuItems.Add(MenuNew); MenuItemFile.MenuItems.Add("Open"); MenuItemFile.MenuItems.Add("Save"); MenuItemFile.MenuItems.Add("Exit"); MenuItem MenuItemEdit = new MenuItem("&Edit"); MenuItemEdit.MenuItems.Add("Copy"); MenuItemEdit.MenuItems.Add("Paste"); mnuFileMenu.MenuItems.Add(MenuItemFile); mnuFileMenu.MenuItems.Add(MenuItemEdit); MenuItem MenuItemEditExt = new MenuItem("From File"); MenuItemEditExt.MenuItems.Add("In File"); MenuItemEditExt.MenuItems.Add("To File"); MenuItemEdit.MenuItems.Add(MenuItemEditExt); } private void MenuNew_Click(Object sender, EventArgs e) { MessageBox.Show("Menu New"); } }
Вся суть обработки находится в коде:
MenuItem MenuNew = new MenuItem("New",new System.EventHandler(this.MenuNew_Click)); MenuItemFile.MenuItems.Add(MenuNew);
Мы создали класс MenuItem и в этом класс при создании указали не только название функции на и указали какая функция будет производить обработку сообщений от этого класса.
new System.EventHandler(this.MenuNew_Click));
Ну и позже описали саму функцию.
private void MenuNew_Click(Object sender, EventArgs e) { MessageBox.Show("Menu New"); }
Идти по такому длинному пути совсем не обязательно, намного проще указать обработчик при добавлении пункта меню.
MenuItemFile.MenuItems.Add("Open",new System.EventHandler(this.MenuOpen_Click));
Ну и саму функцию обработки написать что ли.
private void MenuOpen_Click(Object sender, EventArgs e) { MessageBox.Show("Menu Open"); }
Вообщем вывод. При создании меню кроме имени нужно указывать еще и функцию обработки события. Приложение реагирует на меню.