爲了能夠觸發C# Button的雙擊事件,我們可以重載MouseDown事件,記錄每次鼠標按下的時間,如果兩次點擊的時間足夠近的話,就觸發一次雙擊方法。
C# Button是有DoubleClick事件的,只是它沒有出現在事件列表中,而且.net也是把這個事件給”屏蔽”掉了,無論你雙擊一個按鈕怎麼快,也不會觸發這個事件。
爲了能夠觸發C# Button的雙擊事件,我們可以重載MouseDown事件,記錄每次鼠標按下的時間,如果兩次點擊的時間足夠近的話,就觸發一次雙擊方法。
這樣也大致能夠達到雙擊的效果,我所採用的方法其實和這個類似,是繼承Button類,重載Button類的Click事件,在Click事件中判斷兩次點擊的時間,如果近的話,就觸發雙擊事件。
下面就是C# Button雙擊事件的代碼:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
public class ButtonEx : Button
{
public new event EventHandler DoubleClick;
DateTime clickTime;
bool isClicked = false;
protected override void OnClick(EventArgs e)
{
base.OnClick(e);
if (isClicked)
{
TimeSpan span = DateTime.Now - clickTime;
if (span.Milliseconds < SystemInformation.DoubleClickTime)
{
DoubleClick(this, e);
isClicked = false;
}
}
else
{
isClicked = true;
clickTime = DateTime.Now;
}
}
}
這樣,就可以爲創建的ButtonEx按鈕添加DoubleClick事件了:
ButtonEx btn=new ButtonEx();
btn.DoubleClick += new EventHandler(btn_DoubleClick);