Как я сказал в комментарии, однажды у меня была та же самая проблема.Мне нужно было обнаруживать двойные щелчки, но щелчки и двойные щелчки должны вести себя как отдельные события.Это означает, что если был выполнен двойной щелчок, щелчок не должен срабатывать (поскольку каждое действие имело разные и несовместимые эффекты в пользовательском интерфейсе).
«Собственный» двойной щелчок не работал для меня, поскольку срабатывали события щелчкапроизошел двойной щелчок или нет.Вот пример кода в Actionscript.Я уверен, что вы сможете следовать (простой) логике, чтобы реализовать ее в .net.Обратите внимание, что я жестко прописываю время двойного щелчка, так как не могу получить системное значение для него из Actionscript.Это не идеально, но я должен был пойти на компромисс.Вместо этого вы должны использовать интервал времени, предоставленный ОС (или вашей средой выполнения), если он вам доступен.
Надеюсь, это поможет.
package {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
public class Button extends Sprite {
public function DCButton() {
super();
graphics.beginFill(0xff0000);
graphics.drawRect(0,0,100,100);
graphics.endFill();
addEventListener(MouseEvent.CLICK,handleClick);
}
private var _clickCount:int = 0;
private var _doubleClickInterval:int = 200;
private function handleClick(e:MouseEvent):void {
_clickCount++;
// start the timer and when it completes, check the number of clicks
// based on this, dispatch either click or doubleClick events
if(_clickCount == 1) {
setTimeout(checkDoubleClick,_doubleClickInterval,e);
}
else
{
checkDoubleClick(e);
}
}
private function checkDoubleClick(e:MouseEvent):void {
if(_clickCount == 0) return;
var type:String;
if(_clickCount == 1) {
type="click";
} else if(_clickCount > 1) {
type="doubleClick";
}
trace(type);
_clickCount = 0;
// dispatch the detected event here...
}
}
}