在MS-Word
鼠標點擊事件被用作:三腳鼠標在C#中單擊?
一按 - 將光標
雙擊 - 選擇字
三擊 - 選擇段落
在C#中我可以處理單,雙鼠標點擊事件,但我想處理事件C#Windows TextBox。
例子:
void textbox1_TripleClick()
{
MessageBox.Show("Triple Clicked");
}
在MS-Word
鼠標點擊事件被用作:三腳鼠標在C#中單擊?
一按 - 將光標
雙擊 - 選擇字
三擊 - 選擇段落
在C#中我可以處理單,雙鼠標點擊事件,但我想處理事件C#Windows TextBox。
例子:
void textbox1_TripleClick()
{
MessageBox.Show("Triple Clicked");
}
看一看這樣的: Mousebuttoneventargs.clickcount
這應該涵蓋的,我知道。
你只需要存儲時,雙擊那個盒子裏發生的時間。然後,在單擊處理程序中,檢查雙擊是否發生不超過N毫秒(N = 300左右)。
在這種情況下,直接調用您的TripleClick()函數或爲您派生的「TripleClickAwareTextBox」定義一個新事件。
我工作的一個類似的問題在C++
首先,你需要了解事件如何解僱,我帶點擊使用鼠標左鍵: - 點擊一次 - >左鍵單擊事件開火 - 雙擊 - >左鍵雙擊事件觸發
Windows僅支持您達到此級別。
對於三重點擊,它實質上是雙擊之後的點擊,中間的時間足夠小。所以,你需要做的是處理一個點擊事件,檢查之前是否有雙擊,並觸發一個三重點擊事件。
雖然代碼是不同的,這是我要做的事:
處理程序
click處理
if ((clock() - doubleClickFiredTime) < doubleClickInterval)
<fire triple click event>
tripleClickFired = true;
else
<fire click event>
雙擊處理程序
doubleClickTime == clock()
doubleClickInterval == GetDoubleClickTime() * CLOCKS_PER_SEC/1000;
If (!tripleClickEventFired)
<fire doubleClickEvent>
else
tripleClickEventFired = false;
個
我使用的功能是:
注:第三點擊火災既是一個系統級單擊和雙擊事件
做到這一點:
private int _clicks = 0;
private System.Windows.Forms.Timer _timer = new System.Windows.Forms.Timer();
private void txtTextMessage_MouseUp(object sender, MouseEventArgs e)
{
_timer.Stop();
_clicks++;
if (_clicks == 3)
{
// this means the trip click happened - do something
txtTextMessage.SelectAll();
_clicks = 0;
}
if (_clicks < 3)
{
_timer.Interval = 500;
_timer.Start();
_timer.Tick += (s, t) =>
{
_timer.Stop();
_clicks = 0;
};
}
}
不要*猜測*對於某些用戶來說時間太短,對其他用戶來說太長。使用用戶在其操作系統中配置的時間作爲其首選雙擊時間。可通過SystemInformation.DoubleClickTime訪問 - http://msdn.microsoft.com/en-us/library/system.windows.forms.systeminformation.doubleclicktime.aspx – 2011-02-16 11:34:01
您還希望確保每次點擊都發生在最後單擊,大小爲SystemInformation.DoubleClickSize。 – EricLaw 2012-09-02 17:59:51