netlib.narod.ru | < Назад | Оглавление | Далее > |
Единственным (из пяти перечисленных) не рассмотренным ранее конструктором MenuItem является конструктор по умолчанию:
new MenuItem()
Используя его, надо устанавливать свойства объекта MenuItem. Свойства, связанные с текстом пункта меню и быстрой клавишей, приведены в таблице:
Свойства MenuItem (выборочно)
Тип | Свойство | Доступ |
string | Text | Чтение/запись |
char | Mnemonic | Чтение |
Shortcut | Shortcut | Чтение/запись |
bool | ShowShortcut | Чтение/запись |
Свойство Mnemonic указывает символ, следующий за амперсандом в свойстве Text (или 0, если мнемонического символа нет). Можно установить свойство ShowShortcut в false и запретить вывод быстрой клавиши справа от текста пункта меню.
Вот большинство свойств MenuItem типа bool для чтения и записи:
Свойства MenuItem (выборочно)
Тип | Свойство | Доступ |
bool | Visible | Чтение/запись |
bool | Enable | Чтение/запись |
bool | DefaultItem | Чтение/запись |
bool | Break | Чтение/запись |
bool | BarBreak | Чтение/запись |
Если установить свойство Visible в false, пункт не будет появляться в меню. Но быстрая клавиша (если она задана) все равно будет вызывать обработчик события Click. Это свойство можно применять для установки быстрых клавиш, не связанных с каким-либо пунктом меню. Кроме того, можно делать какие-то пункты опционально невидимыми для реализации «облегченного» меню, например для новичков.
Возможно, Enabled используют чаще прочих свойств из этих пяти. Его устанавливают в false, чтобы заблокировать неприменимые в данный момент пункты.Если пункт заблокирован, текст выводится бледным шрифтом, указывая на то, что пункт меню недоступен. Для заблокированного пункта нельзя вызвать обработчик события Click ни мышью, ни быстрой клавишей.
Пункты меню File и Edit часто блокируются и разблокируются в зависимости от определенных условий. Обычно пункты Save и Save As заблокированы, когда не загружен ни один документ. Пункты Cut и Сору заблокированы, когда документ загружен, но в нем ничего не выделено. Программа блокирует пункт Paste, если в буфере обмена нет данных, которые могут быть использованы в этой программе. Ниже я объясню, как блокировать пункты меню.
Пункт, свойству DefaultItem которого присвоено значение true, называется пунктом меню по умолчанию. Текст такого пункта выводится шрифтом полужирного начертания. Для главного меню программы свойство DefaultItem имеет смысл устанавливать только для пунктов подменю. При двойном щелчке по пункту, активизирующему подменю, вызывается пункт подменю по умолчанию. Например, если и конструктор FirstMainMenu вставить:
miExit.Defaultltem = true;
двойной щелчок по пункту File приведет к закрытию программы. Чаще всего пункты по умолчанию применяются в контекстных меню.
Установка свойства Break в true приводит к тому, что пункт меню (и все последующие пункты) выводятся в новой колонке. Если свойству BarBreak задать true, эффект будет точно такой же за исключением того, что между колонками появится вертикальная линия. Хотя обычно так не делают, можно устанавливать свойства Break и BarBreak для пунктов верхнего уровня главного меню. Эффект от применения этих свойств одинаковый: пункт меню (и все последующие) выводится в новой строке.
Это еще не все свойства MenuItem. Вскоре я рассмотрю свойства Checked и RadioCheck. Кроме того, класс MenuItem, как и MainMenu и ContextMenu, наследует от класса Menu важнейший класс MenuItems (обратите внимание на множественное число), который я тоже рассмотрю ниже.
В классе MenuItem определено пять событий, важнейшее из которых — Click. Два из них связаны с прорисовкой владельцем, которую я рассмотрю в конце главы. А вот три других события (включая Click):
События MenuItem (выборочно)
Событие | Метод | Делегат | Параметры |
Click | OnClick | EventHandler | EventArgs |
Popup | OnPopup | EventHandler | EventArgs |
Select | OnSelect | EventHandler | EventArgs |
Обработчики события Popup часто устанавливают для пунктов меню верхнего уровня, например File или Edit. Событие Popup вызывается перед тем, как выводится подменю, связанное с этим пунктом. Как я уже отмечал, некоторые пункты меню, например Cut, Copy и Paste, блокируются и разблокируются в зависимости от выделенного фрагмента документа или содержимого буфера обмена. Такую блокировку/разблокировку удобно выполнять в обработчике события Popup.
Событие Select вызывается, когда курсор мыши проходит над пунктом меню или пользователь перемещается между пунктами с помощью клавиш управления курсором. Выбранный пункт обычно выводится другим цветом. Возможно, вы замечали, что некоторые приложения выводят в строке состояния текст, коротко описывающий выделенный пункт меню. Я покажу, как это делается, в главе 20.
netlib.narod.ru | < Назад | Оглавление | Далее > |