C# 實現Button雙擊事件

  爲了能夠觸發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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章