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 を作成してイベント ハンドラを共有することにより、MenuStrip と 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
メニュー プロパティとメソッドの対応関係
次の表は、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 メソッドの呼び出しはアップグレードされません。代わりとなるコンテキスト メニューを作成する必要があります。
参照
概念
メニュー処理 (Visual Basic 6.0 ユーザー向け)
参照
MenuStrip コントロールの概要 (Windows フォーム)