Шаг 33 - Создаем обработчик событий меню

Итак, меню у нас есть, а вот как обрабатывать события этого меню? Давайте посмотрим код, который умеет это делать.

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

Вообщем вывод. При создании меню кроме имени нужно указывать еще и функцию обработки события. Приложение реагирует на меню.

gif/33_1.gif (2806 b)


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 01.10.2001