我想请问VB中,双击鼠标事件必定会导致单击事件,那么怎么解决这个问题呢?
发布网友
发布时间:2022-04-22 20:56
我来回答
共4个回答
懂视网
时间:2022-04-23 01:17
这次给大家带来解决双击与单击事件互相冲突,解决双击与单击事件互相冲突的注意事项有哪些,下面就是实战案例,一起来看一下。
在JS中代码中同一功能块中通常同时会用到单击、双击事件,但通常会遇到一个问题,就是在双击的时候即执行了一次双击事件,而且还执行了两次单击事件。此类冲突在ZTree、DHTMLX中经常遇到。
想要解决两个事件冲突,需要对单击事件进行延时,如果在此延时中又监测到单击事件,那么认为此两次单击属于一个双击事件,则只执行双击事件,并第一时间将延时定时器清理,以防止第二次单击生效。
具体代码如下:
var clickFlag = null;//是否点击标识(定时器编号)
function doOnClick(...) {
if(clickFlag) {//取消上次延时未执行的方法
clickFlag = clearTimeout(clickFlag);
}
clickFlag = setTimeout(function() {
// click 事件的处理
}, 300);//延时300毫秒执行
}
function doOnDblClick(...) {
if(clickFlag) {//取消上次延时未执行的方法
clickFlag = clearTimeout(clickFlag);
}
// dblclick 事件的处理
}
相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!
推荐阅读:
使用select组件案例详解
封装Vue2路由导航钩子并在实战中使用
热心网友
时间:2022-04-22 22:25
你那个恐怕不好实现、
但是我想也没有什么程序一定需要设定单击和双击的不同动作吧?
比如windows中,单击文件是选中,双击是打开。但是双击的时候其实也是先选中了。
所以你的程序中最好两个事件的代码不是互相排斥的。
另外下面的代码可以供你参考
'本代码演示如何获取鼠标按下和放开的间隔时间
Private Declare Function GetDoubleClickTime Lib "user32" () As Long
Private Declare Sub GetLocalTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Dim T1 As SYSTEMTIME
Dim T2 As SYSTEMTIME
Private Sub Form_Load()
'显示系统中设定的判定双击的时间间隔
MsgBox ("判定双击的时间间隔=" & GetDoubleClickTime)
End Sub
Private Sub form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
GetLocalTime T1
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
GetLocalTime T2
MsgBox ("你按下和放开鼠标的时间间隔为" & CalcSJC)
End Sub
Private Function CalcSJC() As Integer
Dim a As Double
b = Val(T1.wSecond)
a = Val(T1.wSecond) * 1000 + Val(T1.wMilliseconds)
If Val(T2.wSecond) < b Then
c = (Val(T2.wSecond) + 60) * 1000 + Val(T2.wMilliseconds)
Else
c = Val(T2.wSecond) * 1000 + Val(T2.wMilliseconds)
End If
shijiancha = c - a
CalcSJC = shijiancha
End Function
热心网友
时间:2022-04-22 23:43
你的动作是单击还是双击是系统定义的,去控制面板看一下,鼠标有一项设置叫双击时间间隔,他决定了你两次单击是不是双击。
从编程的角度,你编写的程序的窗口收到的双击的消息是来自系统的,在用户两次单击时,如果系统检测到两次的时间间隔小于上面设定的那个值,就当成是双击,如果不是的话,就是两次单击。
热心网友
时间:2022-04-23 01:18
不会的吧?是不是你双击间隔太长了?