The standard combobox control doesn’t support the double-click event, as it is actually a combination of more than one control itself. In my case, I am using the combobox in simple mode with a textbox at the top and a permanently open list directly below the textbox. I needed for the listbox below to respond to the user double-clicking a list item. I found a great solution in a Usenet post by Jacques Bourgeois in microsoft.public.dotnet.framework.windowsforms.controls. Essentially the code simulates a double-click using the single-click event and a timer control.
Declare a timer control in your class, and in the load event of the form instantiate the timer set the interval of the timer to the interval of the double-click as set in the user’s system:
this.comboDoubleClick = newTimer();
this.comboDoubleClick.Interval = SystemInformation.DoubleClickTime;
In the event handler for the timer, set the code to stop the timer:
this.comboDoubleClick.Enabled = false;
Add code to the single-click event handler to handle the double-click. When the event handler fires, if the timer is not enabled, start the timer (the first click). If the timer is enabled, a previous click has occurred within the system set interval for a double-click. This must be the second click of the double-click, so do whatever you needed the double-click to do and then disable the timer for the next single-click event.
private void Combo_MouseClick(object sender, MouseEventArgs e)
{
if (this.comboDoubleClick.Enabled == true)
{
//Do double-click work here
this.comboDoubleClick.Enabled = false;
}
else
{
this.comboDoubleClick.Start();
}
}