Share via


Menu オブジェクト (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 という名前の [編集] メニューに [切り取り]、[コピー]、および [貼り付け] サブメニューがある場合、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 列挙型は 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

MdiWindowListItem

メソッド

Visual Basic 6.0

Visual Basic 2008 で対応するもの

PopupMenu

新規に実装されました。ContextMenuStrip コンポーネントを使用します。

アップグレード メモ

Visual Basic 6.0 アプリケーションが Visual Basic 2008 にアップグレードされるとき、PopupMenu メソッドの呼び出しはアップグレードされません。代わりとなるコンテキスト メニューを作成する必要があります。

参照

概念

メニュー処理 (Visual Basic 6.0 ユーザー向け)

参照

MenuStrip コントロールの概要 (Windows フォーム)

その他の技術情報

Windows フォーム コントロール (Visual Basic 6.0 ユーザー向け)