Chciałbym móc przechwytywać zdarzenia DoubleClick lub MouseDoubleClick ze standardowego przycisku opcji WinForm, ale wydaje się, że są one ukryte i nie działają. W tej chwili mam kod jak to:Jak uzyskać zdarzenie DoubleClick w przycisku radiowym .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);
}
}
}
Czy istnieje prostszy i czystszy sposób to zrobić?
Edit: W tle, zgadzam się z Raymond Chen postu here że zdolność dwukrotnie kliknąć na przycisku radiowego (jeśli takie są tylko kontrole oknie) sprawia, że dialog tylko odrobinę łatwiejsza w użyciu ludzie, którzy o tym wiedzą.
W Vista przy użyciu okien dialogowych zadań (patrz this Microsoft guideline page lub this MSDN page specifically about the Task Dialog API) byłoby oczywistym rozwiązaniem, ale nie mamy tego luksusu.
jestem akceptując ten jeden, ponieważ chociaż wydaje mi się, że moje własne rozwiązanie jest prostsze w moim przypadku, w którym zamierzam używać tej samej kontroli wiele razy, jeśli ktoś po prostu chciał jeden lub dwa, wtedy twoja jest znacznie prostsza. – Ant
Wygląda na to, że nie działa na platformie .NET 3.5, ponieważ kliknięcia == 2 nigdy się nie zdarzają. – Wernight
To też nie zdarza się w .NET 4.0, więc przełączam zaakceptowaną odpowiedź na opartą na refleksji przez MSW. – Ant