[.NET]讓 Button 可以引發 DoubleClick 事件

在 Windows Form 的 Button ,是不會引發 DoubleClick 事件的。

那要如何才可以讓 Button 可以引發 DoubleClick 呢?

可以參考MSDN中Button.DoubleClick Event內容,

ControlStyles.StandardClick and ControlStyles.StandardDoubleClick style bits are set to false
the DoubleClick event is not raised. 

所以要讓 Button 可以引發 DoubleClick 事件,

就是將 ControlStyles.StandardClick and ControlStyles.StandardDoubleClick style bits 設定成 true。

所以有2個方式,

1是建立自已的Button類別,然後在建構子中,透過 SetStyle Method 來設定,如下,

public class DoubleClickButton : Button
{
	public DoubleClickButton()
	{
		SetStyle(ControlStyles.StandardClick | ControlStyles.StandardDoubleClick, true);
	}
}

2是透過 Reflection 的方式來設定,如下(假設畫面上有一個 button1),

MethodInfo m = typeof(Button).GetMethod("SetStyle", BindingFlags.Instance | BindingFlags.NonPublic);
if (m != null)
{
	m.Invoke(button1, new object[] { ControlStyles.StandardClick | ControlStyles.StandardDoubleClick, true });
}

參考資料

Button.DoubleClick Event

How do I get a DoubleClick event in a .NET radio button?

WinForms how to call a Double-Click Event on a Button?

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^