2012-07-03 6 views
0

Я нашел статью здесь:WinForms текстовое поле Ctrl-Backspace, чтобы удалить слово целиком & Spaces

Winforms Textbox - Using Ctrl-Backspace to Delete Whole Word

, чтобы удалить все слово в текстовое поле, удерживая Ctrl + Backspace, но я заметил, что если вы не «т реализовать модификации app.config так:

<configuration> 
    <appSettings> 
    <add key="SendKeys" value="SendInput" /> 
    </appSettings> 
</configuration> 

что только текущее слово будет удалено, а процесс реверса будет прерван. Например, если я набрал «Tim tom», а затем использовал трюк ctrl + backspace, «tom» был бы удален, прерывая любую операцию backspace и оставив «Tom».

Если вы сделать использовать модификацию app.config, однако, «Томь» будет успешно удалить и Backspace операция будет продолжаться, но без продолжения, чтобы удалить целые слова, как если бы вы были просто удерживая кнопку возврата.

Кто-нибудь знает, что вызывает это и как его исправить?

ответ

0

Ваше приложение выбирает другое поведение отправки эквивалентов нажатия клавиш для приложения.

Историческая экспозиция, почему два протокола существуют объясняется here:

Класс SendKeys был обновлен для .NET Framework 3.0 с включить его использование в приложениях, работающих на Windows Vista. Улучшенная защита Windows Vista (известная как Контроль учетных записей пользователей или UAC) предотвращает работу предыдущей реализации как ожидалось. Класс SendKeys восприимчив к вопросам синхронизации, которые некоторым разработчикам пришлось обойти. Обновленная реализация по-прежнему подвержена проблемам с синхронизацией, но немного быстрее и может потребовать изменения в обходных решениях . Класс SendKeys сначала пытается использовать предыдущую реализацию , и если это не удается, используется новая реализация . В результате класс SendKeys может вести себя по-другому в разных операционных системах. Кроме того, когда класс SendKeys использует новую реализацию, метод SendWait не будет ждать сообщений , которые будут обработаны, когда они будут отправлены другому процессу.

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

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

Однако реальная причина между изменением поведения SendKeys не программист дружелюбие (что существенно не улучшить), но security.

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