当 C# 中的 webBrowser 控件中的 form_load 事件加载 PDF 文件时,控件会丢失索引

Controls lose the index when a PDF file is loaded by form_load event in webBrowser control in C#

我在 C# windows 应用程序的表单上有一个 tabControl,它有两个标签页。我禁用了这个 tabControl 的 tabIndex。此 tabControl 的第一页上有一个 textBox,此 tabControl 的第二页上有一个 webBrowser。我希望 textBox 在加载表单时默认具有第一个索引。这工作得很好。但是当我添加这个命令时:

webBrowser1.Navigate(Directory.GetCurrentDirectory() + "\help.pdf");

在 form_load 事件中,文本框不再有索引。我该怎么办?

.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();
    }

我只关注 webBrowser documentComplete 事件中的 textBox1:

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    textBox1.Focus();
}