Элементы управления теряют индекс при загрузке файла 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();
}
Другие вопросы по тегам