Можно ли получить и изменить стандартное системное контекстное меню для текстового поля? - PullRequest
5 голосов
/ 16 мая 2011

У меня есть простое приложение winform с текстовым полем.
Я не назначил никакого контекстного меню текстовому полю и "он использует" стандартное. Я хочу добавить несколько новых элементов в стандартное контекстное меню текстового поля. Но я не могу получить его для модификации, если быть более ясным, я не знал, как получить нативный объект HMENU.
ContextMenu свойство моего текстового поля равно null, поэтому я полагаю, что меню появляется в текстовом поле по умолчанию windProc маршрутизации. Есть ли способ получить контекстное меню по умолчанию или получить его копию?

Заранее спасибо!

1 Ответ

1 голос
/ 17 мая 2011

В зависимости от того, какие плагины вы используете, может быть проще и понятнее создать пользовательский элемент управления, производный от TextBox и определяющий контекстное меню «по умолчанию». Затем измените все текстовые поля в вашем решении, чтобы они вместо этого были вашим пользовательским элементом управления. В противном случае, если у вас есть общий предок окна, установите некоторый код инициализации, который назначает данное ContextMenu всем элементам управления в иерархии формы типа TextBox. Вместо того чтобы подключаться к низкоуровневым хукам Windows, вы используете то, что фреймворк дает вам для достижения той же цели, и вашему потомству не нужно знать, как Windows обрабатывает контекстные меню на уровне передачи сообщений, чтобы изменить это поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...