WPF TextBox не принимает ключ удаления - PullRequest
4 голосов
/ 10 июня 2009

У меня есть приложение WPF, встроенное в окно Microsoft Outlook 2003. Все работает нормально, за исключением того, что ни один из моих элементов управления TextBox не принимает клавишу возврата. Я провел некоторые исследования, и проблема существует только тогда, когда мое окно является дочерним по отношению к окну внешнего вида, а не если это другое окно (я ввел его в Firefox, и он работает нормально, и если я помещаю свой wpf UserControl в диалоговое окно это тоже работает). Похоже, что это обратная проблема, о которой люди сообщают (текстовое поле принимает только клавиши удаления / стрелки / и т. Д.), И этот поток был несколько информативным (хотя и не решил мою проблему): Текстовый ящик WPF не принимает входные данные, когда в ElementHost в Оконные формы

Вот мои настройки: Я создаю WPF UserControl, который затем помещаю в ElementHost. Я поместил этот хост в пользовательский элемент управления Windows Forms, который помещается в другой пользовательский элемент управления Forms, который помещается в NativeWindow (я пытался удалить некоторые из оберток UserControl, но безрезультатно). Это родное окно становится дочерним по отношению к окну Outlook и размещается там, где мне нужно, чтобы оно было в Outlook.

У кого-нибудь есть идеи? Может быть, мне нужно обрабатывать сообщения Windows по-другому? Я провел некоторое исследование и обнаружил, что Outlook получает сообщение WM_COMMAND, когда я нажимаю клавишу возврата, но не когда я ничего не нажимаю. Может быть, он интерпретирует клавишу возврата как ускоритель меню или что-то в этом роде?

Спасибо.

1 Ответ

1 голос
/ 23 июня 2009

Я нашел способ обойти это. Я расширил WndProc в Outlook и прослушал WM_COMMAND. Всякий раз, когда это происходит, я говорю своей системе WPF UserControl отправлять клавишу возврата на текущий элемент управления, ориентированный на клавиатуру.

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

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