.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); } } } }