问题:
什么判断鼠标第三键是  按下状态(长按)我想做,,只有当鼠标第三键 处于按下的状态时
鼠标  左右键才有效

解决方案 »

  1.   

    你可以设置一个布尔型变量
    然后在窗体或控件的mousedown下判断 如果button=4 为真,否则为假
    再在其他的鼠标单击是判断变量的值
      

  2.   

    窗体中放一个label然后粘帖下面的代码
    Option Explicit
    Dim Flag As BooleanPrivate Sub Form_Load()
        Flag = False
        Label1.BackColor = vbBlue
        Label1.Caption = ""
    End SubPrivate Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Select Case Button
            Case 4
                Flag = True
            Case 1
                If Flag Then
                    Label1.Caption = "左键有效"
                Else
                    Label1.Caption = "左键无效,请按下中键"
                End If
            Case 2
                If Flag Then
                    Label1.Caption = "右键有效"
                Else
                    Label1.Caption = "右键无效,请按下中键"
                End If
        End Select
        Debug.Print Button
    End SubPrivate Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Select Case Button
            Case 4
                Flag = False
            
        End Select
        Label1.Caption = ""
    End Sub
      

  3.   

    不是这样的,,,,,
    这样的话,,只有中间键 点在Label1 的时候才能有校,现在关键问题是:不管中间键是点在哪里,,
    响应左右键点的那个控件的事件  其实这时候中间键就相当于一个钥匙,,长
    按着的时候 相当于是开匙了,,,
    按下的时候要做很多操作,,不只是一个操作,,
    这办法,我也试过,,,也就是遇到
    是需要鼠标长按,,
    ,,还有一个问题 ,,第三键按下(长按)的时候
    同时点一个控件,,,
    问题是:  鼠标只响应这个控件(第一次点击的那个)
    再点其他控件就不响应了(第三键是一直按着的)
      

  4.   

    chewinggum(口香糖·dotnet转型中) 
    可能也很少见这样的需求 ,,
    用法有点怪,,,
    呵呵
      

  5.   

    比较笨的办法就是在每个控件的mouse事件中都做这种操作。高级一点的办法就是用钩子钩消息了
      

  6.   

    其实不只是VB程序里有这个问题,,
    平常 的操作也有这个问题,,
    你可以试,,,按下中间键,,点网页上的一个链接,,
    第一次  点的时候,,可以连接
    如果鼠标第三键不松开的话,,,点其他 地方就没有反应了在VB里我试了,也是有反应的只是一直在响应第一次点的那个控件的事件
      

  7.   

    这样做,,,在窗体时放一个label,和窗体重叠,,(好算座标)
    然后,,把所有的操作都放在这个label的事件中点击的时候,,判断鼠标的位置,,,
    Public Function ClickMe(AControl As Object, cx As Single, cy As Single) As Boolean
        If AControl.Left < cx And (AControl.Left + AControl.Width) > cx And _
           AControl.Top < cy And (AControl.Top + AControl.Height) > cy Then
            ClickMe = True
        Else
            ClickMe = False
        End If
    End FunctionAcontrol 就是要实际上要点击的那个控件
    如下调用  Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)    If Button = 1 Then
            If ClickMe(labe12, X, Y) Then
                
                Exit Sub
            End If
            If ClickMe(label3, X, Y) Then
                操作
                Exit Sub
            End If
            
            If ClickMe(label4, X, Y) Then
               '操作
            End If
            
        End If
            
    End Sub