.NET Compact Framework 不支持按鈕的 Windows 窗體 DoubleClick 事件。但是您可以創建一個從 Button 類派生的控件來實現該事件。
創建自定義雙擊事件
-
創建一個從 System.Windows.Forms.Button 類派生的類。
-
聲明一個 DoubleClick 事件。
-
使用代碼重寫 OnClick 方法,以在指定時間內單擊按鈕時引發 DoubleClick 事件。
示例:
此示例創建一個 DoubleClickButton 自定義控件並在一個窗體上實現該控件。
using System; using System.Windows.Forms; using System.Drawing; namespace ButtonDClick { public class Form1 : System.Windows.Forms.Form { // Track the number of // double-clicks with the count variable. int count = 0; public Form1() { InitializeComponent(); // Display OK button for closing. this.MinimizeBox = false; // Create an instance of the DoubleClickButton class. DoubleClickButton dClickB = new DoubleClickButton(); dClickB.Bounds = new Rectangle(10,10,200,30); dClickB.Text = "Double-click me!"; Controls.Add(dClickB); // Add the DClick event hander to the DoubleClick event. dClickB.DoubleClick += new EventHandler(DClick); } protected override void Dispose( bool disposing ) { base.Dispose( disposing ); } private void InitializeComponent() { this.Text = "Form1"; } private void DClick(object o, EventArgs e) { // Display the number of double-clicks. MessageBox.Show("Double-click count = " + ++count); } static void Main() { Application.Run(new Form1()); } // Derive a button with extended funtionality // from the Button class. public class DoubleClickButton : System.Windows.Forms.Button { // Note that the DoubleClickTime property gets // the maximum number of milliseconds allowed between // mouse clicks for a double-click to be valid. int previousClick = SystemInformation.DoubleClickTime; public new event EventHandler DoubleClick; protected override void OnClick(EventArgs e) { int now = System.Environment.TickCount; // A double-click is detected if the the time elapsed // since the last click is within DoubleClickTime. if ( now - previousClick <= SystemInformation.DoubleClickTime) { // Raise the DoubleClick event. if (DoubleClick != null) DoubleClick(this,EventArgs.Empty); } // Set previousClick to now so that // subsequent double-clicks can be detected. previousClick = now; // Allow the base class to raise the regular Click event. base.OnClick(e); } // Event handling code for the DoubleClick event. protected new virtual void OnDoubleClick(EventArgs e) { if (this.DoubleClick != null) this.DoubleClick(this, e); } } } }