* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Активация и деактивация команд меню
7 февраля 2009
У каждого элемента меню есть свойство Enabled. Установив его в false, вы деакти- вируете элемент меню, запрещая ему реагировать на действия пользователя, в том числе на клавиши доступа и быстрые клавиши. Деактивированные элементы меню выделены бледно-серым цветом. Следующий пример показывает, как деактивиро- вать элемент меню во время выполнения.
Visual Basic .NET Menulteml.Enabled = False Visual C# menu Item "(.Enabled = false; Отображение элементов меню с флажками Свойство Checked можно снабдить элемент меню флажком, который отображается справа от имени элемента. Флажки позволяют пометить выбранные параметры. Следующий пример демонстрирует, как пометить элемент меню флажком и снять флажок: Visual Basic .NET Пометить элемент меню флажком Menulteml.Checked = True ' Снять флажок у элемента меню Menulteml.Checked = False Visual C# // Пометить элемент меню флажком Menulteml.Checked = true; // Снять флажок у элемента меню Menulteml.Checked = false; Отображение элементов меню с переключателями Вместо флажка можно отображать переключатель. Для этого свойство RadioCheck элемента меню следует установить в true, в результате справа от имени элемента меню отобразится не флажок, а переключатель. Если же свойство Checked установ- лено в false, ни фдажок, ни переключатель не отображаются. Заметьте, что пере- ключатели часто применяют для выбора взаимоисключающих параметров, напри- мер цвета фона. Чтобы при установке одного переключателя остальные сбрасыва- лись, вам придется самостоятельно написать соответствующий код. Как сделать элемент меню невидимым Чтобы сделать элемент меню невидимым, установите его свойство Visible в false. Это свойство позволяет изменять меню во время выполнения в зависимости от некото- рых условий. Вот как это делается: Visual Basic .NET Menulteml.Visible = False Visual C# menulteml.Visible = false; Заметьте, что элементы, сделанные во время выполнения невидимыми, удаля- ются из меню, а их вложенные элементы становятся недоступными. Клонирование меню Во время выполнения разрешается копировать (клонировать) имеющиеся элемен- ты меню. Например, имеет смысл клонировать элемент главного меню Edit (со все- ми вложенными элементами) и поместить копию в контекстное меню некоторого элемента управления. Эта задача решается с помощью метода Clone Menu. Этот ме- тод создает копию заданного элемента меню со всеми его членами, к которым от- носятся вложенные элементы меню, свойства и обработчики событий. В результате получается клон, способный обрабатывать все события, который обрабатывал ори- гинал. Созданное таким образом контекстное меню достаточно просто связать с элементом управления. Следующий пример демонстрирует клонирование элемен- та меню во время выполнения и создание контекстного меню на основе клона: Visual Basic .NET Этот пример предполагает наличие элемента меню fileMenuItem и элемента управления myButton. Объявить новое контекстное меню и создать его экземпляр Dim myContextMenu as New ContextMenuf) Клонировать fileMenuItem и занести клон з свойство myContextMenu myContextMenu. MenuItems.Add( fileMenuItem. CloneMenuO) Назначить контекстное меню элементу управления myButton myButton.ContextMenu = myContextMenu Visual C# // Этот пример предполагает наличие элемента меню fileMenuItem // и элемента управления myButton. // Клонировать fileMenuItem и занести клон в свойство myContextMenu ContextMenu myContextMenu = new ContextMenu(); // Клонируем fileMenuItern и заносим в контекстное меню элемент-клон inyContextMenu. Menultems. Add(fileMenuItem.CloneMenuO); // Назначить контекстное меню элементу управления mySutton myButton.ContextMenu - myContextMenu; Слияние меню во время выполнения Порой во время выполнения требуется объединить содержимое нескольких меню, Для этого применяют метод MergeMenu, который способен объединять содержимое главного и контекстного меню, отдельные элементы меню и добавлять отдельные элементы в существующее меню. > Как объединить меню во время выполнения Вызовите метод MergeMenu из объекта меню или элемента меню, к которому нужно присоединить меню (или элемент), заданное аргументом этого метода: Visual Basic .NET MainMenul.MergeMenu(ContextMenul) Visual C# mainMenul. MergeMenu (context Menu"!); Создание элементов меню во время выполнения Разрешается динамически добавлять к меню новые элементы во время выполне- ния. Например, к меню File можно добавить элементы, отображающие путь к не- давно открывавшимся файлам. У новых элементов меню нет обработчиков собы- тий, однако можно задать метод, обрабатывающий событие Click, передав ею кон- структору элемента меню как аргумент. Этот метод должен быть процедурой (Sub или, в С#, void) с сигнатурой обработчика события. Вот примеры подходящих ме- тодов: Visual Basic .NET Public Sub ClickHandler {ByVal sender As Object. ByVal e As System.EventArgs) Реализация опущена End Sub Visual C# public void ClickHandler (object sender, System.EventArgs e) { // Реализация опущена > Создание элементов меню во время выполнения 1. Объявите новый элемент меню и создайте его экземпляр. При желании можно сразу же задать метод-обработчик события Click: Visual Basic .NET * Этот пример предполагает наличие метода myClick ' с сигнатурой обработчика события Dim myltem as Menultem myltem = New Menultem("ltem 1", New EventHandler(AddressOf myClick)) Visual C# // Зтот пример предполагает наличие метода myClick // с сигнатурой обработчика события Menultern myltem; myltem = new Menu Item("Item 1", new EventHandler(myClick)); 2. Добавьте новый элемент к набору элементов расширяемого меню. Visual Basic .NET Mai nMenul. Men ulterns. Add (myltem) Visual C# MainMenul.Menu!tems.Add{myltem);