logo
C#, 320 стр

Классы меню

Все, что можно делать руками, можно делать программно. Рассмотрим классы, используемые при работе с меню. Основным родительским классом является абстрактный класс Menu, задающий базовую функциональность трех своих потомков - классов MainMenu, ContextMenu и MenuItem. Класс MenuItem задает элемент меню, который, напомню, сам может являться меню (подменю). Свойство MenuItems, которым обладают все классы меню, возвращает коллекцию MenuItems из элементов меню класса MenuItem. С коллекцией можно работать обычным образом. Создание меню означает создание объектов контейнерных классов MainMenu и ContextMenu и множества объектов класса MenuItem. Последние добавляются в коллекцию либо контейнерных классов, либо в коллекцию соответствующих элементов MenuItem. Созданные объекты классов MainMenu и ContextMenu связываются со свойствами формы - Menu и ConextMenu. Проанализируем код, созданный в процессе проектирования Дизайнером Меню и Дизайнером Формы для нашего примера.

Вот какие поля формы, задающие объекты меню, были сформированы:

private System.Windows.Forms.MainMenu mainMenu1;

private System.Windows.Forms.MenuItem menuItem1;

//другие элементы меню

private System.Windows.Forms.MenuItem menuItem10;

Основной код, создаваемый дизайнерами, помещается в метод InitializeComponent. Приведу лишь фрагменты этого кода:

this.mainMenu1 = new System.Windows.Forms.MainMenu();

this.menuItem1 = new System.Windows.Forms.MenuItem();

...

// mainMenu1

this.mainMenu1.MenuItems.AddRange(new

System.Windows.Forms.MenuItem[]

{this.menuItem1,this.menuItem2,this.menuItem3});

// menuItem1

this.menuItem1.Index = 0;

this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[]

{this.menuItem4,this.menuItem10});

this.menuItem1.Text = "File";

...

// menuItem4

this.menuItem4.Index = 0;

this.menuItem4.Text = "Open";

this.menuItem4.Click += new System.EventHandler(this.menuItem4_Click);

...

// Form1

...

this.Controls.AddRange(new System.Windows.Forms.Control[] {

this.textBox1});

this.Menu = this.mainMenu1;

this.Name = "Form1"; this.Text = "Form1";

Надеюсь, что данный программный код прозрачен и не требует дополнительных комментариев.