none
[NET][TIP] 컨트롤에 Popup 메뉴 넣기 RRS feed

답변

  • VB 6.0 에서는 메뉴작성기에 메뉴를 만들고 Visible 을 False 시킨 상태에서
    "PopupMenu [메뉴 이름]" 이런식으로 해서 메뉴를 사용했었습니다.
    그런데 닷넷에서는 약간 틀리군요. 

    도구 상자에서 먼저 ContextMenuStrip 을 폼에 추가합니다.
    추가한 컨트롤을 선택하면 폼 위쪽에 메뉴를 작성할 수 있도록 도구가 나타납니다.
    메뉴를 아주 쉽게 만들 수 있죠.
    메뉴를 만들었으면 그 다음 컨트롤에 연결해 봅시다.

    먼저 MyBase.Load (폼 로드 부분)에 코딩을 합니다.

     

            [팝업 메뉴를 달고자 하는 컨트롤].ContextMenuStrip = [팝업 메뉴 명]
     
          [팝업 메뉴 명].AutoClose = True

     

    이런식으로 넣어주면 해당 컨트롤의 Context Menu가 추가한 컨트롤과 연결됩니다. 다른 곳을 클릭하면
    자동으로
    닫히게끔 설정도 했구요.

    다음은 이제 마우스 오른쪽 버튼 누르면 위에 설정한것이 작동하도록 해야죠?
    해당 컨트롤의 MouseUp 핸들(이벤트)에 아래와 같이 코딩을 합니다.

     

            If e.Button = Windows.Forms.MouseButtons.Right Then
                팝업메뉴명.Show()
            End If

     

    자 이렇게 함으로써 팝업 메뉴 달기가 끝났습니다.
    오늘도 즐프 하세요.

    아래는 실제 코딩 부분입니다. lstBaseData C1Flexgrid 입니다.
    그리고
     
    popupProcess ContextMenuStrip 입니다.

     

    Private Sub frmProcess_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        lstBaseData.ContextMenuStrip = popupProcess
        popupProcess.AutoClose = True

    End Sub

     

    Private Sub lstBaseData_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles lstBaseData.MouseUp
        If e.Button = Windows.Forms.MouseButtons.Right Then
            popupProcess.Show()
        End If

    End Sub

    • 답변으로 표시됨 devlife 2012년 6월 29일 금요일 오전 11:00
    2012년 6월 29일 금요일 오전 11:00