다음을 통해 공유


Visual Basic 6.0 사용자를 위한 Menu 개체

업데이트: 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 구성 요소로 대체되었습니다. 디자인 타임에 내부 편집 기능을 사용하거나 코드를 작성하여 메뉴를 만들 수 있습니다. MenuStripContextMenuStrip 구성 요소를 사용하면 회색으로 표시된 영역, 아이콘 및 드롭다운 목록과 같은 포함 컨트롤을 완벽하게 지원하는 최신 Office 도구 모음 스타일 메뉴를 만들 수 있습니다. 자세한 내용은 MenuStrip 컨트롤 개요(Windows Forms)를 참조하십시오.

상황에 맞는 메뉴 표시

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 연결 및 포함에만 사용되었는데 이 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 Forms)

기타 리소스

Visual Basic 6.0 사용자를 위한 Windows Forms 컨트롤