KNOW INTUIT, Лекция, Стандартни менюта на приложението

Недостатъкът на този код е, че сме свързали извикването на формата за упражнение към индекса на списъка.

Упражнение 1: Просто меню

Помислете за проста програма, която симулира работата на меню.

  • Отворете файла Form1.cs в режим Преглед на кода и добавете кода за създаване на просто меню към конструктора на класа
  • Пренапишете маркираните редове код за ръчно регистриране на манипулаторите на събития Click, за да създадете правилно заготовките на манипулатора, и попълнете манипулаторите със следния код

В програмата създаваме обект на менюто като екземпляр на класа MenuStrip и го свързваме с обекта на формуляра. Класът MenuStrip има свойство Items, което е колекция от елементи от менюто от най-високо ниво. Създаваме два такива обекта itemFile и itemHelp от тип ToolStripMenuItem и ги добавяме към свойството Items. Всеки обект ToolStripMenuItem има свойство DropDownItems, готово да съхранява колекция от команди и разделители, включително вложени такива за изграждане на менюта от сложна йерархия. Добавяме командни обекти към тези свойства на елемент от най-високо ниво.

Схематично такава процедура за конструиране на примерно меню е показана на фигурата.

intuit

Символът амперсанд & в стойността на свойството Text на името на командата, то е свързано с долната черта на буквата след нея и позволява след натискане на клавишаAlt(без задържане) да се извикват команди чрез просто натискане на съответните клавиши.Долната черта в работещата програма се появява само след щракване върху клавишаAlt.

Свойството ShortcutKeys на командния обект очаква побитова комбинация от членовете на системното изброяване. Windows .Forms. Keys , който определя клавишите за бърз достъп за тази команда. Булевото свойство ShowShortcutKeys на командния обект включва илиизключва показването на дадената комбинация за бърз достъп вдясно от командата. Стойността по подразбиране е true и клавишната комбинация се показва, ако такава е зададена в свойството ShortcutKeys. Свойството ShortcutKeyDisplayString ви позволява да зададете различен показван низ за зададената комбинация от този по подразбиране (например вместоCtrl+Aпо подразбиране можете да зададетеCtrl^A).

Събитието Click на командния обект се повдига, когато се избере съответната команда и кара фиксирания манипулатор да се изпълни.

Обърнете внимание, че както колекцията Items от менюто от най-високо ниво, така и колекциите DropDownItems от падащи менюта показват елементи в реда, в който са добавени към колекцията. Свойствата Items и DropDownItems са екземпляри на класа ToolStripItemCollection, който има метод Add(). С този метод добавяме обекти от менюто към колекцията. Самите елементи от менюто, добавени към колекциите, са екземпляри на класа ToolStripMenuItem.

Въпреки това можете също да използвате метода за събиране AddRange(), който очаква препратка към масив от командни обекти. Така например, нека обектите itemFile, itemOpen, itemSep, itemExit вече са създадени. След това всички подчинени командни обекти могат да бъдат прикрепени към обекта от най-високо ниво наведнъж със следния ред код:

Претоварванията на метода Add() ви позволяват да добавите команда от менюто заедно с текст, текст и изображение, текст + изображение + Име на манипулатор на събитие за щракване.

Има един недостатък в кода на упражнението. Препратките към командите на менюто се декларират вътре в конструктора като локални променливи. Ако елементите от менюто трябва да се управляват от други места в програмата, тогава тези променливи няма да са налични. По-разумно е да декларирате връзки към елементи от менюто като полета на .

Упражнение 2: Меню сзнамена

Съвременните менюта имат колона отляво на командите, която може да показва изображения или квадратчета за отметка. В това упражнение ще разгледаме управлението на квадратчета за отметка.

Появата на квадратче за отметка отляво на команда се разрешава от свойството Boolean Checked на командния обект. Като алтернатива можете да зададете свойството CheckState на една от стойностите на изброяването със същото име. Например за обекта itemOpen това може да се дефинира като

  • itemOpen.CheckState = CheckState. Неопределени ;
  • itemOpen.CheckState = CheckState.Checked;
  • itemOpen.CheckState = CheckState. без отметка;

Опцията Indeterminate ви позволява да показвате неопределено състояние, когато в квадратчето за отметка е поставена точка.

Булевото свойство CheckOnClick прави квадратчето за отметка самоуправляващо се, когато състоянието му се промени автоматично при щракване. Но ако група квадратчета за отметка се използва като радио бутони за избор на един от няколко взаимно изключващи се елемента, тогава тяхното състояние трябва да се управлява ръчно.

В това упражнение ще създадем меню за шрифтове, което ще изброява шрифтовете, поддържани от компютъра. Обикновено за съвременните операционни системи този списък е голям и не се побира на екрана, така че ще използваме обект от класа ToolStripDropDownMenu. Този клас е отговорен за появата на стрелки, които ви позволяват да навигирате в меню, което не съдържа команди. Тук използваме създаване и персонализиране на менюта отчасти декларативно, отчасти програмно. Е, управлението на логиката на менюто може да се извърши само в програмен режим.