窗体中放一个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
这样做,,,在窗体时放一个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
然后在窗体或控件的mousedown下判断 如果button=4 为真,否则为假
再在其他的鼠标单击是判断变量的值
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
这样的话,,只有中间键 点在Label1 的时候才能有校,现在关键问题是:不管中间键是点在哪里,,
响应左右键点的那个控件的事件 其实这时候中间键就相当于一个钥匙,,长
按着的时候 相当于是开匙了,,,
按下的时候要做很多操作,,不只是一个操作,,
这办法,我也试过,,,也就是遇到
是需要鼠标长按,,
,,还有一个问题 ,,第三键按下(长按)的时候
同时点一个控件,,,
问题是: 鼠标只响应这个控件(第一次点击的那个)
再点其他控件就不响应了(第三键是一直按着的)
可能也很少见这样的需求 ,,
用法有点怪,,,
呵呵
平常 的操作也有这个问题,,
你可以试,,,按下中间键,,点网页上的一个链接,,
第一次 点的时候,,可以连接
如果鼠标第三键不松开的话,,,点其他 地方就没有反应了在VB里我试了,也是有反应的只是一直在响应第一次点的那个控件的事件
然后,,把所有的操作都放在这个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