SendKeys :: Отправляйся в бешенство - PullRequest
1 голос
/ 11 октября 2011

Я пытаюсь обновить два связанных TextBox es.Я отключаю события в одном, а затем отправляю нажатия клавиш, например, SendKeys::Send("A");, предварительно придав ему фокус:

texBox2->Focus();
texBox2->KeyDown -= gcnew KeyEventHandler(this, &Form1::texBox2_KeyDown);
SendKeys::Send("A");
texBox2->KeyDown += gcnew KeyEventHandler(this, &Form1::texBox2_KeyDown);

Это почти работает, но становится абсолютно умственным, вместо этого повторяя символ (я не знаюне проверяйте, какой именно ключ, потому что я неистово борюсь с переполнением), пока не нажму control-alt-del.Никакие другие клавиши не имеют никакого эффекта, и мышь зависает.Но диспетчер задач чудесным образом восстанавливает мой контроль, я от этого ничего не останавливаю и не убиваю.

Кто-нибудь может посоветовать?Отладчик зависает от этого оператора SendKeys::Send("A");.

1 Ответ

5 голосов
/ 11 октября 2011

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

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

...