Работа с menustrip и contextmenustrip Андрю Troelsen

Работа с MenuStrip и ContextMenuStrip

• ToolStripMenuItem - традиционно меню.

• ToolStripComboBox - вграден елемент ComboBox (падащ).

• ToolStripSeparator - проста линия, разделяща съдържанието.

• ToolStripTextBox - вграден елемент на TextBox (текстовото поле) на.

От програмна гледна точка, MenuStrip контрол съдържа силно написали ToolStripItemCollection колекция. Подобно на други видове колекции, този обект поддържа методи Добави (), AddRange (), Remove () и имот граф. Тази колекция е обикновено е попълнено директно, а чрез различни видове инструменти за проектиране, но ако е необходимо, е възможно да я обработва ръчно.

За да дам един пример за използването на контрол MenuStrip, създаване на нови форми приложение за Windows, наречен MenuStripApp. Поставете контрола MenuStrip за формата в прозореца за проектиране, което му придава mainMenuStrip име. В резултат на това, файлът * .Designer.cs добавена нова променлива.

частен System.Windows.Forms.MenuStrip mainMenuStrip;

Работа с menustrip и contextmenustrip Андрю Troelsen

• Поставете "стандартен" системното меню (File, Save, Инструменти, Помощ, и т.н.), като използвате връзката Insert Стандартни елементи (Insert стандартни елементи).

• промяна в поведението на докинг MenuStrip.

• Edit всеки елемент MenuStrip (това е просто една "бърза алтернатива" във връзка с избора на тази конкретна позиция в прозореца със свойства).

Работа с menustrip и contextmenustrip Андрю Troelsen

Фиг. 19.12. Създаване на система за меню

Забележка. Вероятно знаете, че символ амперсандния (), който се намира в предната част на писмото в бар опцията в менюто, задава клавишната комбинация за бърз достъп до този елемент. В този пример е посочено Файл, Exit, така че потребителят може да активира менюто Exit, като първо натиснете , след <и>.

Всеки, който сте въвели в менюто в режим на елемент от дизайна, той е от типа на класа ToolStripMenuItem. След като отворите файла * .Designer.cs, ще видите, че има нови променливи за всеки от въведените елементи.

частичен клас MainWindow

частен System.Windows.Forms.MenuStrip mainMenuStrip;

частен System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;

частен System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;

частен невалидни InitializeComponent ()

this.menuStrip1.Items.AddRange (нов System.Windows.Forms.ToolStripItem [] );

this.fileToolStripMenuItem.DropDownItems.AddRange (нов System.Windows.Forms.ToolStripItem [] );

Накрая (не по-малко важно), MenuStrip контрол се добавя към контролите форма събиране. Тази колекция ще бъдат обсъдени по-подробно в глава 21, както и че е важно да се отбележи, че контролът може да се вижда по време на изпълнение, само в случай, че този елемент е в наличност в посочената колекция.

За да завършите създаването на кода на нашия пример, върнете се в екрана за проектиране и следвайте обработката на хлъзгав на събитие за излизане на елемент от менюто, като използвате бутона на събитията в прозореца Свойства. В генериран манипулатор събитие, направете предизвикателство ApplicationExit.

частен невалидни exitToolStripMenuItem_Click (обект подател, EventArgs д)

Сега можете да компилирате и стартирате програмата. Уверете се, че можете да затворите приложението и двете, като изберете файла, Exit от менюто или чрез натискане на , след <и> на клавиатурата.

Добавянето каре елемент MenuStrip

Да се ​​създаде нов елемент е най-високото ниво на менюто, като определите това име елемент Промяна на цвета на фона. Подчинена елемент в това меню няма да бъде елемент от менюто, и ToolStripTextBox елемент (фиг. 19.13). Добавянето на нови контрол, да си смени името toolStripTextBoxColor с помощта на прозореца Properties.

Нашата цел е възможността на потребителя да изберете цветове (червено, зелено, розово и т.н.). която ще определи стойността за формата на собственост BackColor. Първо лечение на събитието LostFocus за новия член. ToolStripTextBox в дизайна на форма (това събитие се случва, когато текст полето в ToolStrip престава да бъде активен интерфейс елемент).

toolStripTextBoxColor.LostFocus + = нов EventHandler (toolStripTextBoxColor_LostFocus);

Работа с menustrip и contextmenustrip Андрю Troelsen

Фиг. 19.13. Добавянето на TextBox в MenuStrip

В генериран манипулатор събитие, чете данните от низови вписани в ToolStripTextBox (използвайки свойствата на текст), както и използването на метода на системата. Drawing.Color.FromName (). Този статичен метод връща типа на цвят, низ, съответстващ на известна стойност. За да се отчете на потребителя да въведе неизвестен цвят (или други неподходящи данни) използва проста логика пробвам / улов.

нищожен toolStripTextBoxColor_LostFocus (обект подател, EventArgs д)

> улов <>// Просто игнорира неверните данни.

Създаване на контекстни менюта

Сега помислете процедурата за изграждане на контекстно меню за (т.е., меню, капка, като щракнете с десния бутон на мишката). Клас използва за изграждане на контекстни менюта в .NET 1.1. Беше клас ContextMenu, но NET 2.0 е предпочитан тип ContextMenuStrip. Като тип MenuStrip, тип ContextMenuStrip подкрепя ToolStripItemCollection да представлява всички опции в менюто (ToolStripMenuItem, ToolStripComboBox, ToolStripSeparator, ToolStripTextBox и т.н.).

Работа с menustrip и contextmenustrip Андрю Troelsen

Фиг. 19.14. Създаване на ContextMenuStrip

Това контекстното меню има за цел да даде възможност на потребителя да изберете размер на шрифта за съобщението, за да бъдат показани във форма на клиента. За да се опрости задачата, да създадете списък с вида на TextFontSize рамките MenuStripApp пространство от имена и да обяви нова променлива член на този тип в рамките на Форма (настройка TextFontSize.FontSizeNormal променливата стойност).

// Спомагателен списък на размера на шрифта.

обществен MainForm клас: Форма

частен TextFontSize currFontSize = TextFontSize.FontSizeNormal;

Следващата стъпка е да обработва събитията Боя формуляр с помощта на прозореца Properties. Както ще бъде показано в следващата глава, Paint събитие може да показва графични данни в клиентската област на формата (включително текста, посочен в съответния стил). В този случай, трябва да се покаже на текстово съобщение, използвайки потребителското определен размер на шрифта. Не се тревожи за подробностите все още, модифицира манипулатор Paint събитие, както е предложено по-долу.

частен невалидни MainWindow_Paint (обект подател, PaintEventArgs д)

Графика г = e.Graphics;

g.DrawString ( "Кликнете тук за десния бутон на мишката ...", нов Font ( "Times New Roman", (флоат) currFontSize), нов SolidBrush (Color.Black), 50, 50);

И накрая, необходимостта да се справят с Click събитие за всеки от видовете ToolStripMenuItem подкрепена ContextMenuStrip компонент. Възможно е, разбира се, да има отделен манипулатор за клик събитие за всеки от видовете, но ние се отбележи, че едно събитие манипулатор ще се нарича, когато потребителят кликне върху някоя от трите елемента ToolStripMenuItem. С помощта на прозореца Properties, задайте името манипулатор на събитие Click ContextMenuItemSelection_Ciicked за трите типа ToolStripMenuItem и прилагане на най-подходящия метод, както е показано по-долу.

частен невалидни ContextMenuItemSelection_Clicked (обект подател, EventArgs д)

// Получаване ToolStripMenuItem елемент

// където се прави едно кликване.

ToolStripMenuItem miClicked = (ToolStripMenuItem) подател;

// Търсене на елемент, върху която е кликнато в името му.

ако (miClicked.Name == "hugeToolStripMenuItem") currFontSize = TextFontSize.FontSizeHuge;

ако (miClicked.Name == "normalToolStripMenuItem") currFontSize = TextFontSize.FontSizeNormal;

ако (miClicked.Name == "tinyToolStripMenuItem") currFontSize = TextFontSize.FontSizeTiny;

// Задаване на формата за опресняване на гледката.

Моля, имайте предвид, че използването на подател аргумент за определяне на името на променливата-членът ToolStripMenuItem, за да зададете размера на текста. След този разговор невалидност () генерира събитието Paint, което ще доведе до вашия манипулатор Paint събитие.

Последната стъпка е да информира формата на клетка ContextMenuStrip да се показва, когато щракнете с десния бутон в зоната на клиент. За да направите това с помощта на прозореца Properties, задаване на стойността на имота ContextMenuStrip на името на опцията в контекстното меню. След това, на следния ред се появява в контекста на InitializeComponent ().

Ако стартирате приложението сега, можете да промените размера на показаната текстово съобщение, като щракнете с десния бутон на мишката.

Забележка. С контекста на имот MenuStrip в контекстното меню може да включва всякакъв контрол. Например, ако в контекстното меню на диалоговия прозорец, за да се създаде обект Бутон (бутон), а след това на съответния елемент от менюто се показва само при едно кликване се прави в бутоните за работно място.

Проверка на състоянието на елементите от менюто

Термини като ToolStripMenuItem ви позволяват да се провери състоянието на елемент от менюто, да я предостави или скрита. Таблица. 19.11 са описания на някои от най-интересните характеристики на този тип.

Таблица 19.11. Термини като ToolStripMenuItem