Я пишу приложение, в котором пользователь должен иметь возможность изменять действие кнопки.
Пользователь должен щелкнуть правой кнопкой мыши и выбрать параметр из контекстного меню всплывающих окон. После того, как выбор сделан, кнопка будет выполнять другое действие, когда пользователь будет использовать обычный клик.
Я уже получил событие "Click", которое работает для обычного нажатия кнопки, однако обработчик событий "MouseClick" работает неправильно.
Событие "MouseClick" активируется с помощью обычных кликов по левому краю, но никогда не будет вызван для щелчка правой кнопкой мыши.
Выполняется ли некоторая обработка событий по умолчанию, которая игнорирует этот щелчок правой кнопкой мыши?
Если вы хотите отобразить контекстное меню с действиями на его выбор, должно быть достаточно, чтобы назначить ContextMenuStrip
ContextMenuStrip
свойство. Обычно для этого не требуется вручную обрабатывать события мыши.
Мне жаль говорить, что это будет серьезный UI blooper. Возможно, было бы разумнее добавить небольшое поле со списком рядом с кнопкой.
Возможно, что-то вроде этого? http://www.codeproject.com/KB/buttons/SplitButton.aspx
Конечно, было бы лучше реализовать его в событии MouseDown, а не в событии MouseUp. Я не понимаю, как это сильно отличается от события MouseClick.
edit: Просто попробовал это, и он работает с удовольствием:)
В кнопке (и некоторых других элементах управления) событие MouseClick запускается только для левой кнопки. См. MSDN.
Если вы хотите узнать о правой кнопке, ответьте на событие MouseUp - хотя, как указывали другие плакаты, это не большой идиом интерфейса.
Используйте событие мыши... проверьте, что Button.X и Button.Y находятся в пределах размера кнопки, иначе вы отталкиваете мышь от кнопки. Терри G