C#Buttonダブルクリックイベントの実装

2443 ワード

C#Buttonのダブルクリックイベントをトリガーするために、MouseDownイベントをリロードし、マウスが押すたびの時間を記録し、2回のクリック時間が十分近ければ、ダブルクリック方法をトリガーすることができます.
C#ButtonはDoubleClickイベントがありますが、イベントリストには表示されません.Netもこのイベントを「スクリーン」に落として、ボタンをダブルクリックしても、このイベントはトリガーされません.
C#Buttonのダブルクリックイベントをトリガーするために、MouseDownイベントをリロードし、マウスが押すたびの時間を記録し、2回のクリック時間が十分近ければ、ダブルクリック方法をトリガーすることができます.
これもほぼダブルクリックの効果がありますが、私が採用している方法はこれと似ていて、Buttonクラスを継承し、ButtonクラスのClickイベントをリロードし、Clickイベントで2回クリックした時間を判断し、近ければダブルクリックイベントをトリガーします.次に、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);