Поделиться через


Объект Menu для пользователей Visual Basic 6.0

Обновлен: Ноябрь 2007

Объект Menu Visual Basic 6.0 заменяется элементом управления MenuStrip или ContextMenuStrip в Visual Basic 2008. Имена некоторых свойств, методов, событий и констант различаются, а в некоторых случаях имеется различие в их поведении.

Концептуальные различия

В Visual Basic 6.0 объект Menu создается с помощью Редактор меню. Объекты Menu привязаны к форме, для которой они создаются, но их можно изменить во время выполнения или отобразить как контекстное меню. Меню, созданные с помощью объекта Menu, изначально не поддерживают заливку, значки или внедренные элементы управления; можно создать только меню в "плоском" стиле Windows 98.

В Visual Basic 2008 объект Menu заменяется компонентами MenuStrip и ContextMenuStrip. Меню можно создать с помощью редактирования на месте в режиме разработки или в коде. Компоненты MenuStrip и ContextMenuStrip позволяют создавать меню в современном стиле панели инструментов Office с полной поддержкой выделения областей заливкой, значков и внедренных элементов управления, таких как раскрывающиеся списки. Дополнительные сведения см. в разделе Общие сведения об элементе управления MenuStrip (Windows Forms).

Отображение контекстных меню

В Visual Basic 6.0 можно отобразить контекстное меню с помощью вызова метода PopupMenu, передав его любому объекту Menu верхнего уровня. Например, если имеется меню Правка с именем mnuEdit с подменю Вырезать, Копировать и Вставить, можно отобразить контекстное меню с командами Вырезать, Копировать и Вставить с помощью вызова PopupMenu mnuEdit.

В Visual Basic 2008 контекстные меню отображаются с помощью отдельного компонента ContextMenuStrip. Эквивалента метода PopupMenu не существует, однако все еще можно распределить команды между объектами MenuStrip и ContextMenuStrip, создав объект ContextMenuStrip в режиме разработки и предоставив общий доступ к обработчикам событий.

Изменения кода для объекта Menu

Следующие примеры иллюстрируют различия в методах кодирования между Visual Basic 6.0 и Visual Basic 2008.

Изменения кода для отображения контекстных меню

В следующем коде показано, как отобразить команды Вырезать, Копировать и Вставить существующего меню Правка в контекстном меню.

' Visual Basic 6.0
Private Sub mnuCut_Click()
    MsgBox "You selected Cut"
End Sub
Private Sub mnuCopy_Click()
    MsgBox "You selected Copy"
End Sub

Private Sub mnuPaste_Click()
    MsgBox "You selected Paste"
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = vbRightButton Then
        PopupMenu mnuEdit
    End If
End Sub
' Visual Basic
' You must first add a ContextMenuStrip component to the form at design 
' time and add Cut, Copy, and Paste menu items named 
' CutContextMenuItem, CopyContextMenuItem, and PasteContextMenuItem.

Private Sub CutToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles CutToolStripMenuItem.Click
    MsgBox("Cut")
End Sub

Private Sub CopyToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles CopyToolStripMenuItem.Click
    MsgBox("Copy")
End Sub

Private Sub PasteToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles PasteToolStripMenuItem.Click
    MsgBox("Paste")
End Sub
Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As _
System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown

  If e.Button = Windows.Forms.MouseButtons.Right Then
    Me.ContextMenuStrip = ContextMenuStrip1

    AddHandler CutContextMenuItem.Click, _
      AddressOf CutToolStripMenuItem_Click

    AddHandler CopyContextMenuItem.Click, _
      AddressOf CopyToolStripMenuItem_Click

    AddHandler PasteContextMenuItem.Click, _
      AddressOf PasteToolStripMenuItem_Click
  End If
End Sub

Эквиваленты свойств и методов Menu

В следующей таблице приведен список свойств и методов Visual Basic 6.0 с их эквивалентами Visual Basic 2008. Свойства и методы, имена и поведение которых не изменились, не указываются. Если не указано иное, все перечисления Visual Basic 2008 сопоставлены пространству имен System.Windows.Forms.

В этой таблице содержатся ссылки на разделы, в которых объясняются различия в поведении. Если нет прямого эквивалента в Visual Basic 2008, приводятся ссылки на разделы, содержащие альтернативные решения.

Свойства

Visual Basic 6.0

Эквивалент Visual Basic 2008

Caption

Text (MenuStripItem)

HelpContextID

Новая реализация. Дополнительные сведения см. в разделе Поддержка справки (для пользователей Visual Basic 6.0).

Index

Новая реализация. См. описание свойства Index класса ToolStripItemCollection.

NegotiatePosition

Нет эквивалента. Это свойство использовалось только для связывания и внедрения OLE, которое больше не поддерживается.

Parent

Метод FindForm

WindowList

MdiWindowListItem

Методы

Visual Basic 6.0

Эквивалент Visual Basic 2008

PopupMenu

Новая реализация. Используйте компонент ContextMenuStrip.

Замечания по обновлению

При обновлении приложения Visual Basic 6.0 до Visual Basic 2008 вызовы метода PopupMenu не обновляются; чтобы их заменить, следует создать контекстные меню.

См. также

Основные понятия

Обработка меню для пользователей Visual Basic 6.0

Ссылки

Общие сведения об элементе управления MenuStrip (Windows Forms)

Другие ресурсы

Элементы управления Windows Forms (для пользователей Visual Basic 6.0)