Объект 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 |
Методы
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)