Элементы управления теряют индекс при загрузке файла PDF по событию form_load в элементе управления webBrowser в C#
У меня есть tabControl на моей форме в приложении C# windows, который имеет две вкладки. Я отключил tabIndex этой вкладки Control. На первой странице этой вкладки расположен текстовый блок, а на второй странице этой вкладки - веб-браузер. Я хочу, чтобы textBox имел первый индекс по умолчанию при загрузке формы. И это работает очень хорошо. Но когда я добавлю эту команду:
webBrowser1.Navigate(Directory.GetCurrentDirectory() + "\\help.pdf");
для события form_load у textBox больше нет индекса. Что я должен делать?
2 ответа
Решение
Элемент управления.NET WebBrowser имеет два события, которые могут вам помочь:
- OnNavigating
- OnDocumentCompleted
Простейшей логикой было бы сохранить ли фокус TextBox перед навигацией и восстановить состояние фокуса после завершения навигации.
private bool _bWasTextBox1Focused = false;
private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
_bWasTextBox1Focused = textBox1.Focused;
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (_bWasTextBox1Focused) textBox1.Focus();
}
Я сосредоточился только на textBox1 в событии webBrowser documentComplete:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
textBox1.Focus();
}