How to: Create a Custom Double-Click Event

[This documentation is for preview only, and is subject to change in later releases. Blank topics are included as placeholders.]

The .NET Compact Framework does not support the Windows Forms DoubleClick event for a button. But you can create a control that derives from the Button class to implement the event.

To create a custom double-click event

  1. Create a class that derives from the System.Windows.Forms.Button class.

  2. Declare a DoubleClick event.

  3. Override the OnClick method with code to raise the DoubleClick event if button clicks occur within a specified time.

This example creates a DoubleClickButton custom control and implements it on a form.

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()

            // 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!";

            // 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)

                // Set previousClick to now so that 
                // subsequent double-clicks can be detected.
                previousClick = now;

                // Allow the base class to raise the regular Click event.

            // Event handling code for the DoubleClick event.
            protected new virtual void OnDoubleClick(EventArgs e)
                if (this.DoubleClick != null)
                    this.DoubleClick(this, e);

This example requires references to the following namespaces: