共用方式為


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 物件已經由 MenuStripContextMenuStrip 元件取代。您可在設計階段使用就地編輯 (In-Place Editing) 建立功能表,或是在程式碼中建立功能表。MenuStripContextMenuStrip 元件可讓您建立現代化的 Office 工具列樣式功能表,其完全支援網底區域、圖示和內嵌控制項 (如下拉式清單)。如需詳細資訊,請參閱 MenuStrip 控制項概觀 (Windows Form)

顯示內容功能表

在 Visual Basic 6.0 中,您可以藉由呼叫 PopupMenu 方法來顯示內容功能表,並將它傳遞給任何的最上層 Menu 物件。例如,如果有名為 mnuEdit 的 [編輯] 功能表,其含有 [剪下]、[複製] 和 [貼上] 子功能表,您就可以藉由呼叫 PopupMenu mnuEdit 的方式,來顯示含有 [剪下]、[複製] 和 [貼上] 命令的內容功能表。

在 Visual Basic 2008 中,內容功能表是使用個別的 ContextMenuStrip 元件來顯示。沒有 PopupMenu 方法的對等用法,不過,您仍可在設計階段建立 ContextMenuStrip 並共用事件處理常式,以便在 MenuStripContextMenuStrip 之間共用命令。

下列範例顯示 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

下表列出 Visual Basic 6.0 的屬性和方法,以及其在 Visual Basic 2008 的對等用法。具有相同名稱和行為的屬性和方法則不列出。除非另外註明,否則所有 Visual Basic 2008 列舉型別 (Enumeration) 都會對應到 System.Windows.Forms 命名空間 (Namespace)。

此表提供說明行為差異的主題連結。若 Visual Basic 2008 中沒有直接的對等用法,則提供連結至替代的主題。

屬性

Visual Basic 6.0

Visual Basic 2008 對等用法

Caption

Text (MenuStripItem)。

HelpContextID

新實作。如需詳細資訊,請參閱 Visual Basic 6.0 使用者可用的說明支援

Index

新實作。請參閱 ToolStripItemCollection 類別的 Index 屬性。

NegotiatePosition

沒有對等用法。這個屬性只適用於不再支援的 OLE 連結 (Linking) 與嵌入 (Embedding)。

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 Form)

其他資源

Visual Basic 6.0 使用者可用的 Windows Form 控制項