How to: Create a Custom Double-Click Event
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer

How to: Create a Custom Double-Click Event

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

Compiling the Code

This example requires references to the following namespaces:

See Also

© 2015 Microsoft