Отправляет email-рассылки с помощью сервиса Sendsay

Visual Basic.NET. Уроки

  Все выпуски  

Visual Basic. Уроки.


Информационный Канал Subscribe.Ru


VB.NET. Программирование для Windows. Уроки с сайта http://progs.biz

Рассылка №6

VB.NET для Windows. Урок 12. Меню.
VB.NET для Windows. Урок 13. Контекстное меню.

Полные версии уроков (с картинками) можно найти по адресам
Урок 12. Меню.
Урок 13. Контекстное меню.

VB.NET для Windows. Урок 12. Меню

Создайте новый Windows-проект и разместите на форме элемент MainMenu.

После размещения в верхней части формы вашего будущего приложения появится полоска меню. Пока в ней пунктов нет (и если вы запустите программу, то меню не увидите). В отличие от предыдущей версии VB новые пункты меню добавляются естественным образом - вам надо просто щелкнуть на нужном пустом пункте меню (с надписью "Type Here") и набрать с клавиатуры нужный заголовок. После такого добавления очередного пункта меню появляется еще два места для возможного продолжения меню - снизу и справа. Если вы зададите очередной пункт для элемента меню в правом от подменю свободном месте, то получите подменю второго уровня.

Для того, чтобы добавить обработчик для какого-нибудь пункта меню, мы должны действовать опять же естественным образом - просто делаем двойной щелчок на соответствующем пункте и вписываем в обработчик нужный нам код:

  Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MenuItem2.Click
    MessageBox.Show("Обработчик подпункта 1")
  End Sub

Теперь рассмотрим свойства пунктов меню. Отметим сразу, что свойства у пунктов меню разных уровней одинаковы. Некоторые свойства более-менее стандартны и понятны: Checked (логического типа) - отвечает за то, стоит ли галочка рядом с пунктом меню или нет, Enabled (тоже логического типа) - отключает или включает соответствующий пункт меню. Некоторые свойства требуют пояснений и мы рассмотрим их более подробно.

Начнем со свойства DefaultItem логического типа. Если оно равно true, то элемент меню будет элементом вызываемым по умолчанию. Это означает, что если вы делаете двойной щелчок на пункте меню более высокого уровня, то выполнится обработчик для пункта меню со свойством DefaultItem установленным в true. При этом сам элемент подменю будет выделен полужирным шрифтом.

Свойство DefaultItem используется чаще всего в контекстных меню, которые будут рассмотрены в следующем уроке.

Рассмотрим теперь свойство OwnerDraw. Оно логического типа, и отвечает за то, кто рисует пункт меню. Если оно равно false (по умолчанию), то мы имеем стандартный внешний вид для нашего пункта меню. Если же установить его в true, то само меню будет ответственно за свою перерисовку. Давайте для примера сделаем так, чтобы наше меню выводилось синим цветом. Для этого установите свойство OwnerDraw в true. Затем нам надо написать наши обработчики для двух событий - MeasureItem и DrawItem. Первый обработчик отвечает за размеры меню, второй - за внешний вид (прорисовку). Для добавления заготовок для обработчиков в окне кода в левом combobox'е выберите имя нужного меню (у нас это MenuItem2), а в правом - нужный обработчик.

В появившиеся заготовки добавьте следующий код:

  Private Sub MenuItem2_MeasureItem(ByVal sender As Object,
ByVal e As System.Windows.Forms.MeasureItemEventArgs) Handles MenuItem2.MeasureItem
    e.ItemHeight = 20 'Устанавливаем высоту
    e.ItemWidth = 80 'Устанавливаем ширину
  End Sub
  Private Sub MenuItem2_DrawItem(ByVal sender As Object,
ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles MenuItem2.DrawItem
    'Пишем шрифтом перечеркнутым шрифтом Arial, 10-м размером, синим цветом
    e.Graphics.DrawString("Подункт 1", New Font("Arial", 10, FontStyle.Strikeout),
New SolidBrush(Color.Blue), 0, 0)
  End Sub

Компилируем программу, запускаем и любуемся на наше синее перечеркнутое меню.

Разумеется, изменять можно не только шрифт. Можно, скажем, добавить картинку, но это мы рассмотрим как-нибудь в другой раз.

Наверх

VB.NET для Windows. Урок 13. Контекстное меню

Этот урок мы посвятим контекстному меню.

Перенесите его с панели элементов двойным щелчком на форму. Как и главное меню приложения, оно расположится не на самой форме, а в специальной области пониже. Для редактирования нового контекстного меню вы должны выделить его в этой области.

после чего оно появится наверху нашей формы. Добавляются новые пункты в него обычным образом - щелкаем мышкой на пустом прямоугольнике и впечатываем нужный заголовок. Добавьте в наше меню два пункта - Close (по нему программа будет закрываться) и Clear (по нему форма будет очищаться).

Обработчики для пунктов меню тоже добавляем стандартным образом - делаем двойной щелчок на нужном пункте меню и в появивщуюся заготовку вписываем наш код. Для пункта меню с заголовком Close добавьте следующий код:

  Private Sub MenuItem11_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs)
Handles MenuItem1.Click
    Application.Exit()
  End Sub

Для второго пункта контекстного меню (с заголовком Clear) добавьте такой код:

  Private Sub MenuItem11_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs)
Handles MenuItem1.Click
    b = True 'Установка флага перерисовки
    Invalidate() 'Перерисовываем
  End Sub

После создания контекстного меню вы должны приписать его к форме или некоторому элементу управления. Для этого служит свойство ContextMenu. Установите его для нашей формы в ContextMenu11 (именно так по умолчанию было названо наше меню).

С контектсным меню все. Теперь осталось только дописать код для рисования на форме и для ее очистки. Для этого пишем код в обработчике события Paint:

  Private Sub Form1_Paint(ByVal sender As Object,
ByVal e As System.Windows.Forms.PaintEventArgs)
Handles MyBase.Paint
    If b Then
      'Очищаем форму
      e.Graphics.Clear(System.Drawing.SystemColors.Control)
    Else
      'Рисуем эллипс
      e.Graphics.DrawEllipse(New Pen(Color.Red, 10), 10, 10, 100, 100)
    End If
  End Sub

И, разумеется, переменную b мы ложны добавить в число переменных нашей формы:

Public Class Form1
    Inherits System.Windows.Forms.Form
  Dim b As Boolean
  ...

Теперь у нашей программы будет действующее контекстное меню.

Наверх

Copyright Алексеев Игорь, 2002

Copyright сайт progs.biz, 2002


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное