Глава 18. Приложения типа Windows Forms
425
строковый литерал. Этот литерал внутри себя может содержать один
специальный символ (
&
— амперсанд). Если такой символ встроен в
текст опции меню, то при нажатии клавиши
совместно с симво-
лом, перед которым стоит амперсанд, эта опция срабатывает. То есть,
вы можете не открывать никакое меню и не тратить свое время на поиск
подопций, а зная только буквы, которые надо нажимать вместе с кла-
вишей , можете запускать на выполнение ту или иную команду
меню. Повторим: не открывая самого меню. Например, если бы литерал
имел вид
&File
, то нажав комбинацию клавиш +, вы получили
бы эффект, будто открыли меню
File
: увидели бы все выпадающее ме-
ню, которое мы сформировали в форме. В тексте программы вы видите,
что объект
ToolStripMenuItem
(его переменная —
mnFile
) добавляет
опции в выпадающее меню через свойство
DropDown.Items
(в переводе
"выпадающие элементы"). Сам главный объект (
MenuStrip
) добавляет
опции главного меню (горизонтальные опции) тоже через свойство
Items
(см.
mn.Items.Ass(mnFile);
). Точно так же можно было бы доба-
вить и новую опцию горизонтального (главного меню), например,
Project
:
private ToolStripMenuItem mnProject= new ToolStripMenuItem();
А в методе
BiuldMenuSystem()
добавились бы строки:
mn.Project.Text = "Project";
mn.Items.Add(mn.Project);
И т. д.
В программе показана обработка события
Click
опции меню. Для чего
все это? Когда вы построили дерево меню, самая последняя опция
должна выходить на метод, который должен обработать эту опцию и
выдать результат обработки. Именно для этой цели и строится меню.
Все неосновные опции, начиная от самой главной — это только путь
к той, самой последней, при нажатии на которую и должно выполниться
какое-то действие. А нажатие на опцию с требованием выполнить ка-
кое-то действие — это и есть обработка события. В данном случае оно
называется
Click
(щелчок мышью). Мы уже ранее рассматривали, как
обрабатывается событие: с помощью делегата, вызываемого по синтак-
сису лямбда-выражения. При этом делегат вызывает на выполнение
стандартную функцию с двумя аргументами, первым из которых дол-
жен быть аргумент типа
Object
, а второй — типа
EventArgs
. Имена пе-
ременных в скобках могут быть любыми (рис. 18.3), т. к. среда испол-
нения все равно воспринимает их как типы
Object
и
EventArgs
.