Я хотел бы иметь возможность перехватывать события DoubleClick или MouseDoubleClick из стандартного переключателя winforms, но они, похоже, скрыты и не работают. На данный момент у меня есть такой код:
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 );
}
}
}
Есть ли более простой и чистый способ сделать это?
Изменить: для фона я согласен с сообщением Рэймонда Чена здесь, что возможность двойного щелчка по переключателю (если это единственные элементы управления в диалоговом окне) делает диалог совсем крошечным легче использовать для людей, которые знают об этом.
В Vista с использованием диалоговых окон задач (см. эту страницу рекомендаций Microsoft или это Страница MSDN, посвященная API диалога задач), было бы очевидным решением, но мы не можем позволить себе такую роскошь.