我有一个树形面板,对于每个节点,我都有单击和双击事件。但是当我双击时,它也触发了单击事件。那么如何防止在双击时触发单击事件呢?
我有一个树形面板,对于每个节点,我都有单击和双击事件。但是当我双击时,它也触发了单击事件。那么如何防止在双击时触发单击事件呢?
通常同时使用单击和双击事件被认为是一种不好的做法,并且强烈不建议。
然而,如果您仍然想这样做,唯一能够区分单击和双击的方法是通过测量点击之间的时间来人为地添加这种区分。
这个想法是您不会立即执行单击操作,而是等待第二次点击。如果第二次点击很快到来,那么您的双击操作将被触发。否则,在延迟后会触发您的单击操作。
您的代码将类似于:
var singleClickTask = new Ext.util.DelayedTask(singleClickAction), // our delayed task for single click
singleClickDelay = 100; // delay in milliseconds
function onClick() {
singleClickTask.delay(singleClickDelay);
}
function onDblClick() {
// double click detected - trigger double click action
doubleClickAction();
// and don't forget to cancel single click task!
singleClickTask.cancel();
}
function singleClickAction() {
// something useful...
}
function doubleClickAction() {
// something useful...
}
// setting event handlers on an Element
elem.on('click', onClick);
elem.on('dblclick', onDblClick);
onGridRowClick: function(view, record, item, index, e, eOpts) {
if (record._task_in_progress) {
return;
}
// Let the second click as part of the double click to be ignored
record._task_in_progress = true;
// Emulating async task here
setTimeout(function() {
record._task_in_progress = false;
}, 1000);
}
Private flg As Boolean
Private Sub Button_Click()
If flg Then
flg = False
Else
... code to open the form
End If
End Sub
Private Sub Button_DblClick(Cancel As Integer)
flg = True
... code to close the form
End Sub