Как создать собственное событие двойного щелчка для кнопки

Я разрабатываю на С# на .NET Framework. У меня уже есть событие на кнопке, которое происходит одним щелчком мыши. Я также хочу иметь событие по двойному щелчку для той же кнопки.

Как создать событие двойного щелчка на кнопке? Я пробовал с этим, но это не работает:

this.SetStyle(ControlStyles.StandardDoubleClick, true);
this.button1.DoubleClick += new System.EventHandler(button1_DoubleClick);

private void button1_DoubleClick(object sender, EventArgs e)
{            
    MessageBox.Show("You are in the Button.DoubleClick event.");
}

person Thorusan86    schedule 09.12.2010    source источник
comment
Что значит не работает? Какая конкретно ошибка? Ошибка выполнения? Ошибка компиляции?   -  person SpeksETC    schedule 09.12.2010
comment
Когда я нажимаю на кнопку... MessageBox не отображается...   -  person Thorusan86    schedule 09.12.2010
comment
@SpeksETC Я ожидаю, что это будет ошибка компиляции, поскольку событие не объявлено в классе Button ...   -  person Rowland Shaw    schedule 09.12.2010
comment
Для дальнейшего использования используйте документацию. для события Control.DoubleClick содержит полезную справочную таблицу, показывающую, как различные элементы управления обрабатывают (или не обрабатывают) это событие.   -  person Cody Gray    schedule 09.12.2010


Ответы (1)


Элемент управления Button (при условии, что вы находитесь в приложении winforms) не поддерживает двойной щелчок как собственное событие. Вам нужно будет создать свой собственный элемент управления, возможно, наследуя кнопку, предоставленную фреймворком, и прослушать два щелчка в течение соответствующего времени, прежде чем запускать событие DoubleClick.

person Rowland Shaw    schedule 09.12.2010
comment
В дополнение к этому ответу this.SetStyle, который выполняет ваш код, относится к Form, на котором размещена ваша кнопка, а не к самой кнопке. Чтобы это сработало, вам нужно создать подкласс элемента управления Button в собственном пользовательском классе, установить этот стиль и сгенерировать событие DoubleClick, как объясняет Роуленд. - person Cody Gray; 09.12.2010