2011-10-13 73 views
2

我有一個控件,實現了MouseClick事件偵聽器,而MouseDoubleClick偵聽器丟失。使用MouseClick Winforms控件事件實現丟失的MouseDoubleClick

我已經使用管理插件jQuery.DoubleTap我的定製版本在JavaScript中點擊DBLCLICK事件之間進行區分:bit.ly/roCV7h

所以我想在C#中使用類似招:爲點擊事件執行設置延遲,並在超時之前再次觸發時取消它。

我在stackoverflow上找到了很多解決方案:但是它們都不是線程安全的,或者放置主要(GUI)線程進入睡眠狀態。

回答

0

我會使用一個計時器並存儲點擊次數。當計時器「滴答」時,檢查點擊計數並觸發相關事件。

僞代碼(抱歉不記得頭頂上的定時器功能)...

Timer timer = new Timer(); //maybe 500 ms elapsed period 
int mouseCount = 0; 

void OnMouseClick() 
{ 
    if(!timer.Enabled) 
     //start timer 
    mouseCount++; 
} 

void OnTimerTick() 
{ 
    timer.Stop(); 
    if(mouseCount == 1) 
     //fire single mouse click event 
    else if(mouseCount > 1) 
     //fire double mouse click event 
    mouseCount = 0; 
} 
+0

我想補充一個mouceCount = 0中的if else停止點擊後第三次點擊被視爲雙擊 – Stuart

+0

@Stuart,感謝那 - 這部分必須在大腦和手指之間的某處丟失 – musefan

相關問題