Private Sub Form_Mouseup(Button As Integer, Shift As Integer, X As Single, Y As Single)
   If Button = 2 Then
     PopupMenu menu1
   End If
End Sub
上面代码右键单击一次能弹出menu1,再单击右键没有反应,需单击左键再单击右键才能弹出menu1。
如何只连续单击右键就能连续弹出menu1.曾经试过
Form_MouseUp改成Form_MouseDown或
用在PopupMenu menu1 前写  me.refresh谢谢!

解决方案 »

  1.   

    Private Sub Form_Mouseup(Button As Integer, Shift As Integer, X As Single, Y As Single)
       If Button = 2 Then
         PopupMenu menu1
       End If
    End Sub就用这段程序就可以实现啊,连续单击右键都可以出现menu1 菜单。
      

  2.   

    用左键吧:Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
     If Button = 1 Then PopupMenu menu1
    End Sub
    或在控制面板中将鼠标设成左手方式:
    Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
     If Button = 2 Then PopupMenu menu1
    End Sub
      

  3.   

    把你的Form_Mouseup改称Form_Mousedown不就成了
      

  4.   

    为何左键能行而单右键不行,是VB的原因吗,据说VC能实现,请仁兄赐教.谢谢
      

  5.   

    只有northwolves(野性的呼唤)老兄读懂了我的问题
    请各位仔细看一下,是连续点右键.
    请大家在桌面上连续点右键感受一下效果.
      

  6.   

    VB 编译器的BUG,会丢掉一次右键事件,没好的解决办法
      

  7.   

    PopupMenu menu1, vbPopupMenuRightButton  '就行了
      

  8.   

    我找到了一种解决方法,经实验可行
    Private Sub Form_Mouseup(Button As Integer, Shift As Integer, X As Single, Y As Single)
       If Button = 2 Then
         PopupMenu menu1
       End If
    End SubPrivate Sub Form_Mousedown(Button As Integer, Shift As Integer, X As Single, Y As Single)
       menu1.visible=false
    End Sub
    但此方法不足只处是,会将主菜单中的menu1隐藏,在mousedown事件中再放置menu1.visible=true又不能实现连击,是否可通过乒乓键设置实现。
    不过一般快捷菜单的原主菜单项大都作成隐藏。
      

  9.   

    感谢 回复人: James0001(See-Plus-Plus)
      

  10.   

    Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Button = vbRightButton Then PopupMenu menu1
    End Sub我试过了,好用啊~~
    不是你机器的问题吧
      

  11.   

    把代码加到Form_Mousedown事件中去处理吧
      

  12.   

    Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Button = 2 Then
            PopupMenu mnuView, , X + 16, Y + 16
        End If
    End Sub
      

  13.   

    正确可行方法见
    本版James0001(See-Plus-Plus)老兄的帖子。
      

  14.   

    TAMES0001果然高明:
    Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
     PopupMenu MENU1, vbPopupMenuRightButton
    End Sub
      

  15.   

    要不就在Form_Mouseup 代码中添加一行代码,看看怎样
    Private Sub Form_Mouseup(Button As Integer, Shift As Integer, X As Single, Y As Single)
       If Button = 2 Then
         PopupMenu menu1
       form_mouseup 1,0,0       '添加改句,
       End If
    End Sub
      

  16.   

    不是代码有问题也不是别的程序影响是没有达到真正的目的
    你们打开IE和Microsoft开发环境,点击右键弹出菜单,不移动鼠标再点击右键还会弹出菜单
    但是用VB开发的程序却不行
      

  17.   

    '小弟我有办法,这要借助于API函数!Private Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hwnd As Long, lprc As RECT) As Long
    Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
    Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Private Type POINTAPI
            x As Long
            y As Long
    End TypePrivate Type RECT
            Left As Long
            Top As Long
            Right As Long
            Bottom As Long
    End Type'写一个方法,参数lIndex代表从左到友第几个菜单。
    Private Sub ShowMyMenu(ByVal lIndex As Long)
        Dim lM As Long
        Dim objR As RECT
        Dim tP As POINTAPI
        
        lM = GetMenu(Me.hwnd)
        lM = GetSubMenu(lM, lIndex)
        Call GetCursorPos(tP)
        
        Call TrackPopupMenu(lM, 0, tP.x + 2, tP.y + 2, 0, Me.hwnd, objR)
    End Sub^_^试一试!
      

  18.   

    Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 2 Then
         PopupMenu menu1
       End If
    End SubPrivate Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
          menu1.Visible = False
    End Sub