Удалить в меню «Правка»

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

Моя проблема в том, что я хочу обрабатывать события удаления только тогда, когда в фокусе находится определенный элемент управления. В противном случае, в моем элементе управления сеткой данных, например, я хочу, чтобы удаление работало как обычно.

Какой лучший способ сделать это? В настоящее время я получаю событие удаления в основном классе формы, но ключ удаления не работает в элементах редактирования в элементе управления сеткой данных.

Изменить - указано, что ключ удаления не работает в подэлементах редактирования

11.12.2008 10:48:35
2 ОТВЕТА
РЕШЕНИЕ

Похоже, что если вы хотите использовать сочетания клавиш для пунктов меню, которые keycombinationиспользуются во всей вашей форме, независимо от того, настроите ли вы eventhandlerничего не делать, если не в фокусе находится определенный элемент управления деревом (нет способа установить ключ -всем как .Handled=false)

Таким образом, лучшим способом было бы НЕ устанавливать ярлык в строке меню, а вместо этого перехватить KeyDownсобытие в форме ( keypreview) или в конкретном элементе управления деревом, и обработать все, что должен был бы удалить ярлык удаления.

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

2
18.07.2016 12:32:48
Это лучший ответ, хотя, вероятно, можно переопределить ProcessCmdKey для формы или для панели инструментов и указать, что клавиша DEL не нужна, если активный элемент управления - это Edit.
EricLaw 14.11.2012 21:51:44

Если у вас будет только одна форма и только одна сетка данных, самый простой способ - запустить события удаления вашей сетки данных из события click, вызванного вашим пунктом меню. Независимо от того, какая строка является текущей (источник привязки) или выбранной (сетка данных), вы можете удалить программным способом.

1
11.12.2008 11:25:01
Ах, я наверное не совсем понял. Это окна редактирования в элементе управления сеткой данных, где ключ удаления не работает. Я отредактирую свой вопрос.
James Hopkin 11.12.2008 11:30:46