如何在鼠标仍然closures时检测用户窗体上的mouse_down

当鼠标仍然closures时,我想要检测窗体上任何Frame上的mouse_down。 我知道如何做一个点击,但我想赶上mouse_up之前。

谢谢

您可以为窗体上的每个框架创build一个_MouseDown事件处理程序,或者如果有多个框架,则可以创build一个通用事件处理程序类

创build一个类模块(例如名为cUserFormEvents

 Public WithEvents Frme As MSForms.frame Public frm As UserForm Private Sub Frme_MouseDown( _ ByVal Button As Integer, _ ByVal Shift As Integer, _ ByVal X As Single, _ ByVal Y As Single) ' Put your event code here MsgBox Frme.Caption End Sub 

为您的框架声明一个集合

 Dim mcolFrames As New Collection 

将这些代码包含在表单初始化中

 Private Sub UserForm_Initialize() Dim ctl As MSForms.Control Dim clsEvents As cUserFormEvents 'Loop through all controls on userform For Each ctl In Me.Controls 'Only process Frames If TypeOf ctl Is MSForms.frame Then 'Instantiate class module and assign properties Set clsEvents = New cUserFormEvents Set clsEvents.Frme = ctl Set clsEvents.frm = Me 'Add instance to collection mcolFrames.Add clsEvents End If Next ctl End Sub 

现在, Frme_MouseDown将在窗体上的任何Frame上的MouseDown上执行。 用Frme访问特定的Frame