Используйте правую кнопку мыши с помощью кнопки Windows Forms

2

Я пишу приложение, в котором пользователь должен иметь возможность изменять действие кнопки.

Пользователь должен щелкнуть правой кнопкой мыши и выбрать параметр из контекстного меню всплывающих окон. После того, как выбор сделан, кнопка будет выполнять другое действие, когда пользователь будет использовать обычный клик.

Я уже получил событие "Click", которое работает для обычного нажатия кнопки, однако обработчик событий "MouseClick" работает неправильно.

Событие "MouseClick" активируется с помощью обычных кликов по левому краю, но никогда не будет вызван для щелчка правой кнопкой мыши.

Выполняется ли некоторая обработка событий по умолчанию, которая игнорирует этот щелчок правой кнопкой мыши?

Теги:
button
user-interface
events

5 ответов

2
Лучший ответ

Если вы хотите отобразить контекстное меню с действиями на его выбор, должно быть достаточно, чтобы назначить ContextMenuStrip ContextMenuStrip свойство. Обычно для этого не требуется вручную обрабатывать события мыши.

  • 0
    другой пост SO может быть полезен : stackoverflow.com/questions/1044883/…
  • 1
    Благодарю. Я буду использовать этот метод. Как примечание, я только что обнаружил, что событие MouseUp было тем, на которое я должен был смотреть.
Показать ещё 1 комментарий
4

Мне жаль говорить, что это будет серьезный UI blooper. Возможно, было бы разумнее добавить небольшое поле со списком рядом с кнопкой.

Возможно, что-то вроде этого? http://www.codeproject.com/KB/buttons/SplitButton.aspx

  • 0
    Я согласен, очень нестандартный и запутанный. Плохой дизайн ИМО.
  • 0
    @Ed - Ну, моя идея на самом деле очень похожа на решение, опубликованное в ссылке Zyphrax, так что я не думаю, что оно ужасно нестандартное и запутанное. Тем не менее, связанное решение немного более очевидно и элегантно, чем мое, поэтому я, вероятно, пойду в этом направлении, если оно будет иметь смысл в будущих приложениях.
3

Конечно, было бы лучше реализовать его в событии MouseDown, а не в событии MouseUp. Я не понимаю, как это сильно отличается от события MouseClick.

edit: Просто попробовал это, и он работает с удовольствием:)

2

В кнопке (и некоторых других элементах управления) событие MouseClick запускается только для левой кнопки. См. MSDN.

Если вы хотите узнать о правой кнопке, ответьте на событие MouseUp - хотя, как указывали другие плакаты, это не большой идиом интерфейса.

0

Используйте событие мыши... проверьте, что Button.X и Button.Y находятся в пределах размера кнопки, иначе вы отталкиваете мышь от кнопки. Терри G

Ещё вопросы

Сообщество Overcoder
Наверх
Меню