Я разрабатываю создатель PDF-файлов с использованием приложения Windows Forms в Visual Studio Community 2017. Я использую MigraDoc для создания PDF-файлов, и они непосредственно создаются серией данных, вставленных пользователем в текстовые поля.
Страница для вставки и отображения данных одинакова, потому что я хочу в режиме реального времени обновить предварительный просмотр документа PDF.Для отображения PDF я использую элемент axAcroPDF, полученный в разделе COM после установки Adobe Reader.
Чтобы обновить документ PDF, я написал класс, который просто вводит новые элементы (я используюa оставьте триггер события в текстовых полях для вызова обновления) и загрузите новый файл PDF внутри элемента axAcroPDF:
axAcroPDF1.LoadFile(filename);
Проблема заключается в том, что каждый раз, когда я вставляю новые данные в одно из текстовых полей иСобытие отпуска запускается, как будто вся форма перезагружается, и я теряю фокус на текстовое поле, над которым я писал (вставленные данные остаются, но фокус полностью теряется, а курсор записи не сохраняется).Это происходит с другими текстовыми полями, если я нажимаю на другое или использую вкладку для перехода к следующему.Обратите внимание, что PDF обновлен правильно.Есть ли способ избежать этой проблемы и обновить раздел PDF, не теряя внимания на текстовые поля?Возможно ли это сделать на слушателе события changetext для этих текстовых полей?
Вот выдержка из использования кода.Функция updateText вызывается, когда в текстовом поле обнаруживается событие changetext:
private void updateText(object sender, EventArgs e)
{
updateDocument();
axAcroPDF1.LoadFile(filename);
TextBox s = (TextBox)sender;
s.Focus();
}