Фокус() на текстовом поле не работает
Вопрос
У меня есть форма с TextBox
в этом.Каждый раз, когда текст меняется, я использую TextChanged
Событие для создания PDF-файла и загрузки его в AxAcroPDF
-Объект в той же форме.Это работает нормально, но затем TextBox
теряет фокус, и по какой-то причине textBox.Focus()
после загрузки файл не работает.
Есть у кого-нибудь идеи, как я могу сделать так, чтобы вы могли продолжать печатать, обновляя PDF-файл?
РЕДАКТИРОВАТЬ:
у меня была другая идея, я создал отдельную ветку, где я обновляю PDF и в TextChanged
-событие, в котором я только устанавливаю флаг.Но теперь я получаю странную ошибку
Unable to cast COM object of type 'System.__ComObject' to interface type 'AcroPDFLib.IAcroAXDocShim'.
Решение 2
Мне так стыдно за себя, я нашел очень, очень грязный хак, но он работает...Я сделал следующее:
Когда я пишу текст в окне сообщений, я переписываю свой PDF-файл в TextChange-Event.В том же методе я сохраняю элемент управления, который имеет фокус (при вызове LoadFile для PDF-объекта этот элемент управления все равно теряет фокус).А теперь начинается грязная работа:Я реализовал поток, который постоянно устанавливает фокус на элементе управления, хранящемся в переменной.В случае выхода из текстового поля я сбрасываю переменную, чтобы другие элементы управления не блокировались.
Я знаю, это действительно грязный взлом, но теперь я могу мгновенно "редактировать" pdf-файл с помощью моей собственной формы, что приятно для глаз ;)
Спасибо за всю помощь!
Другие советы
Попробуй вот это:
textBox.Select();
textBox.Focus();
Я не смог заставить .Focus() и .Select() работать, поэтому я использовал Jquery, и это работает отлично.
$(document).ready(function () {
setTimeout(function () {
$(".contentWrapper input")[0].focus();
}, 100);
});