Mi piacerebbe essere in grado di catturare gli eventi DoubleClick o MouseDoubleClick da un pulsante di opzione Winforms standard, ma sembrano nascosti e non funzionano. Al momento ho un codice come questo:Come si ottiene un evento DoubleClick in un pulsante di opzione .NET?
public class RadioButtonWithDoubleClick : RadioButton
{
public RadioButtonWithDoubleClick()
: base()
{
this.SetStyle(ControlStyles.StandardClick | ControlStyles.StandardDoubleClick, true);
}
[EditorBrowsable(EditorBrowsableState.Always), Browsable(true)]
public new event MouseEventHandler MouseDoubleClick;
protected override void OnMouseDoubleClick(MouseEventArgs e)
{
MouseEventHandler temp = MouseDoubleClick;
if(temp != null) {
temp(this, e);
}
}
}
C'è un modo più semplice e più pulito per farlo?
Edit: per lo sfondo, sono d'accordo con il post di Raymond Chen here che la capacità di fare doppio clic su un pulsante di opzione (se queste sono le unici controlli nella finestra di dialogo) rende la finestra di un pochino più facile da usare per persone che ne sono a conoscenza.
In Vista utilizzando le finestre di dialogo delle attività (vedere this Microsoft guideline page o this MSDN page specifically about the Task Dialog API) sarebbe la soluzione più ovvia, ma non ne abbiamo il lusso.
Sono accettare questo, perché anche se penso che la mia soluzione sia più semplice per il mio caso, dove userò lo stesso controllo molte volte, se qualcuno ne volesse uno o due, allora il tuo è molto più semplice. – Ant
Sembra che non funzioni su .NET 3.5 poiché i Clic == 2 non si verificano mai. – Wernight
Non succede nemmeno in .NET 4.0, quindi sto passando la risposta accettata a quella basata sulla riflessione di MSW. – Ant