Контекстное меню
Контекстное меню – это меню, которое выскакивает из объекта, когда мы щелкнем по нему правой клавишей мыши. Программист может включать в меню какие угодно действия, но обычно он включает туда действия только над тем объектом, по которому щелкнули, причем только те действия, которые уместны в данной ситуации.
Создается контекстное меню аналогично Главному меню (перечитайте 3.8), но с одним отличием: Так как Главное меню одно на все приложение, а контекстное меню – свое для каждого объекта, то нам придется кроме всего прочего привязывать каждое контекстное меню к своему объекту. Приступим.
Поместим на форму кнопку и сделаем два контекстных меню: одно для формы, другое – для кнопки.
В контекстное меню для формы включим два пункта:
- Покрасить форму в синий цвет
- Покрасить форму в красный цвет
- Расширить кнопку
- Сузить кнопку
В контекстное меню для кнопки включим два пункта:
При щелчке правой клавишей мыши по поверхности формы должно появляться одно меню, по кнопке – другое (см. Рис. 18.16).
Рис. 18.16
Создаем контекстные меню. Поместим на форму элемент управления ContextMenu. Он расположится под формой под именем ContextMenu1. Это будет наше контекстное меню для формы. Аналогично разместим ContextMenu2. Это будет контекстное меню для кнопки.
Щелкнем по элементу ContextMenu1. На форме появится область, которую мы заполним пунктами про синий и красный цвета, как это делали с Главным меню. Щелкнем по элементу ContextMenu2 и аналогично заполним область про расширение и сужение.
Привязываем контекстные меню. Меню готовы. Теперь нужно как-то сказать компьютеру, что ContextMenu1 относится к форме, а ContextMenu2 – к кнопке. Зайдем в окно свойств формы и установим свойству ContextMenu значение ContextMenu1. Зайдем в окно свойств кнопки и установим свойству ContextMenu значение ContextMenu2.
Заставляем контекстные меню работать. Делаем это аналогично Главному меню. Двойной щелчок по пункту меню – и в окне кода появляется заготовка процедуры, куда мы пишем все, что нам нужно. Вот что у вас должно получиться:
Private Sub MenuItem1_Click( ByVal sender As Object, ByVal e As System.EventArgs) Handles MenuItem1.Click
Me.BackColor = Color.Blue 'Контекстное меню формы - Покрасить ее в синий цвет
End Sub
Private Sub MenuItem2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
Me.BackColor = Color.Red 'Контекстное меню формы - Покрасить ее в красный цвет
End Sub
Private Sub MenuItem3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MenuItem3.Click
Button1.Width = Button1.Width + 20 'Контекстное меню кнопки - Расширить ее
End Sub
Private Sub MenuItem4_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MenuItem4.Click
Button1.Width = Button1.Width - 20 'Контекстное меню кнопки - Сузить ее
End Sub
Очень часто в контекстные меню входят те или иные подходящие пункты из Главного меню. VB позволяет сделать так, чтобы для контекстного меню их не приходилось заново программировать. Но мы на этом останавливаться не будем.