菜单对象(针对 Visual Basic 6.0 用户)
更新:2007 年 11 月
Visual Basic 6.0 中的 Menu 对象在 Visual Basic 2008 中由 MenuStrip 控件或 ContextMenuStrip 控件所取代。某些属性、方法、事件和常数的名称是不同的,在某些情况下,行为也有所不同。
概念差异
在 Visual Basic 6.0 中,Menu 对象是使用“菜单编辑器”创建的。Menu 对象绑定到相应的窗体,但这些对象可在运行时修改或作为上下文菜单显示。使用 Menu 对象创建的菜单本身不支持阴影、图标或嵌入式控件;只能创建 Windows 98 式的“平面”菜单。
在 Visual Basic 2008 中,Menu 对象由 MenuStrip 和 ContextMenuStrip 组件所取代。可以在设计时以就地编辑的方式创建菜单,也可以使用代码创建菜单。使用 MenuStrip 和 ContextMenuStrip 组件允许您创建 Office 工具栏样式的现代化菜单,并完全支持阴影区域、图标和嵌入式控件(例如下拉列表)。有关更多信息,请参见 MenuStrip 控件概述(Windows 窗体)。
显示上下文菜单
在 Visual Basic 6.0 中,可以通过调用 PopupMenu 方法然后为其传递任何顶级 Menu 对象,来显示上下文菜单。例如,如果有一个名为 mnuEdit 的“Edit”菜单,并带有“Cut”、“Copy”和“Paste”子菜单,可以通过调用 PopupMenu mnuEdit 显示带有“Cut”、“Copy”和“Paste”命令的上下文菜单。
在 Visual Basic 2008 中,使用单独的 ContextMenuStrip 组件显示上下文菜单。没有 PopupMenu 方法的等效项,但仍可以通过在设计时创建 ContextMenuStrip 并共享事件处理程序,在 MenuStrip 和 ContextMenuStrip 之间共享命令。
Menu 对象代码更改
下面的示例演示 Visual Basic 6.0 与 Visual Basic 2008 在编码方法方面的差异。
上下文菜单显示代码的更改
下面的代码演示如何在上下文菜单中显示现有“Edit”菜单中的“Cut”、“Copy”和“Paste”命令。
' 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
菜单属性和方法等效项
下表列出了 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 |
新的实现。请参见 ToolStripItemCollection 类的 Index 属性。 |
NegotiatePosition |
无等效项。此属性原来仅用于 OLE 链接和嵌入,现已不再支持。 |
Parent |
FindForm 方法 |
WindowList |
方法
Visual Basic 6.0 |
Visual Basic 2008 等效项 |
---|---|
PopupMenu |
新的实现。使用 ContextMenuStrip 组件。 |
升级说明
当 Visual Basic 6.0 应用程序升级到 Visual Basic 2008 时,将不升级对 PopupMenu 方法的任何调用;必须创建上下文菜单替换这些调用。