Чаще всего при работе с контекстным меню используют свойство MenuItems, которое содержит в себе коллекцию пунктов контекстного меню и позволяет изменять эту коллекцию не только во время дизайна, но и во время выполнения программы.
Основным событием контекстного меню является Popup, событие, срабатывающее при выводе контекстного меню на экран.
InputPanel
Ртот компонент инкапсулирует РІ себе некоторые важные аспекты функционирования SIP (Software Input Panel), такие как вывод этого элемента РЅР° экран Рё его сокрытие.
Одним из основных свойств этого компонента является свойство Enabled. Оно позволяет выводить и скрывать панель, а также определять, в каком состоянии она находится. Обычно панель выводится в обработчике события GotFocus компонента, который нуждается в текстовом вводе, а скрывается в обработчике события LostFocus. Свойство VisibleDesktop задает область экрана, которая не занята в данный момент панелью. Оно позволяет динамически менять размер или положение видимых элементов приложения так, чтобы они не скрывались панелью.
StatusBar
Рто обычная строка состояния формы. Свойство Text содержит выводимый РІ строку состояния текст, Р° свойство Font – параметры шрифта.
Обработчики событий элементов управления
Двойной щелчок на любом из элементов управления во время дизайна автоматически генерирует обработчик события, наиболее важного для данного элемента. Например, двойной щелчок на элементе StatusBar формирует в коде формы следующую процедуру, код которой приведен в листинге 6.2.
Листинг 6.2
Private Sub StatusBar1_ParentChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles StatusBar1.ParentChanged
'Здесь мы вводим код обработчика
End Sub
А теперь попробуем переписать это код так, как показано в листинге 6.3. Листинг 6.3
Private Sub Nyam_nyam(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles StatusBar1.ParentChanged
'Здесь мы вводим код обработчика
End Sub
Рта функция РІСЃРµ равно останется работоспособной. Рто РіРѕРІРѕСЂРёС‚ Рѕ том, что РёРјСЏ процедуры РЅРµ имеет значения. Процедура связана СЃ событием РЅРµ именем, Р° параметром Handles, расположенным РІ конце объявления, Рё набором передаваемых параметров. Если установить текстовый РєСѓСЂСЃРѕСЂ после точки, так, как это показано РЅР° СЂРёСЃ.В 6.8, Рё нажать РЅР° клавиатуре сочетание клавиш Ctrl+Space, то РЅР° экран будет выведена подсказка, СЃ какими еще событиями можно связать данную процедуру.
Р РёСЃ.В 6.8. Рзменение РїСЂРёРІСЏР·РєРё процедуры обработки события.
Рљ сожалению, если РјС‹ выберем РёР· СЃРїРёСЃРєР° событие, Рє примеру KeyDown, то получим сообщение РѕР± ошибке Method 'StatusBar1_ParentChanged' cannot handle Event 'KeyDown' because they do not have the same signature. Рто связано СЃ тем, что РІ обработчики разных событий передаются разные аргументы Рё сигнатура РЅРµ может быть одинакова для всех обработчиков. Р’ этом случае надо щелчком мыши РІ редакторе РєРѕРґР° перевести текстовый РєСѓСЂСЃРѕСЂ РІ слово KeyDown, Рё правой РєРЅРѕРїРєРѕР№ мыши вызвать контекстное меню. РР· контекстного меню необходимо выбрать команду Go To Definition, РїСЂРё помощи которой РєСѓСЂСЃРѕСЂ будет перенесен РІ место определения данного события РІ РѕРєРЅРµ Object Browser (СЂРёСЃ.В 6.9).
Рис. 6.9. Событие KeyDown в окне Object Browser.
РР· нижней части РѕРєРЅР°, РІ которой описано событие Рё его сигнатура, можно легко скопировать аргументы Рё затем перенести РёС… РІ РєРѕРґ программы, заменив РёРјРё существующие аргументы процедуры обработки события. После этого программа будет нормально скомпилирована Рё запущена. Видимые Рё невидимые элементы управления
Большинство элементов управления во время дизайна формы выглядят так же, как и во время выполнения программы. Разработчик помещает их на форму и позиционирует при помощи мыши. При помощи мыши разработчик может изменять их размер. Но есть несколько элементов управления, которые или невидимы во время выполнения программы, или поведение и отображение их во время выполнения отличается от поведения и отображения во время дизайна. К ним относятся: MainMenu, Timer, ImageList, ContextMenu, OpenFileDialog, SaveFileDialog и InputPanel. При добавлении к проекту эти компоненты не помещаются на форму, а располагаются на специальной области в нижней части дизайнера форм (рис. 6.10).
Рис. 6.10. Размещение невидимых элементов управления на специальной панели.
Упражнение 6.2
1. Создать новый проект Smart Device Application и сохранить его с именем MyTime. Тип приложения должен быть Windows Application, а платформа – Pocket PC, как и в предыдущем упражнении. В среде будет создан новый проект.
2. В графическом редакторе нужно создать несколько рисунков и сохранить их в каталоге программы с именами, указанными в табл. 6.4.
Таблица 6.4. Рисунки для приложения
3. Выделить форму в дизайнере форм щелчком мыши по заголовку. В правой нижней части рабочего стола Visual Studio нужно найти окно инспектора свойств Properties, предназначенное для редактирования свойств выделенного объекта. Если щелчок на форме не выделил ее, то можно просто выбрать имя формы Form1 из выпадающего списка в верхней части окна Properties. В инспекторе свойств нужно найти свойство Text и изменить его значение, введя строку Мое время. Соответствующая надпись должна появиться в заголовке формы.