繁体   English   中英

将本地HTML文件加载到WebBrowser控件中会不断导致循环

[英]loading a local HTML file into the WebBrowser control keeps causing a loop

我正在尝试创建自己的Web浏览器,以打开我创建的本地存储的网页。 我刚开始使用C#编写程序,并且大部分时间都可以使用浏览器,但是无法打开网页。 我尝试了几种不同的命令并保持相同的结果。这是我用来打开文件的命令:

private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
    string curDir = Directory.GetCurrentDirectory();
    var url = new Uri(String.Format("file:///{0}/{1}", curDir, "START_HERE.html"));
    webBrowser1.Navigate(url);
}

浏览器可以正常打开,但页面会继续加载并且不会停止。 我尝试将代码移到webBrowser1_Navigating上,它打开了Web浏览器,但页面空白。 该文件被设置为作为内容复制到输出目录。

我认为这可能是进度条,并尝试了几种不同的创建方式,但仍得到相同的结果。

这是进度条的代码:

private void webBrowser1_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
{
    try
    {
        if (e.MaximumProgress != 0)
            ProgressBar1.Value = (int)(((double)e.CurrentProgress * 100) / e.MaximumProgress);
        if (ProgressBar1.Value < 0)
            ProgressBar1.Value = 0;
        else if (ProgressBar1.Value > 100)
            ProgressBar1.Value = 100;    
    }
    catch (Exception ex)
    {           
    }
}

我该怎么做才能修复环路? 我知道我想念一些东西,但不确定。

你的帖子说的

private void webBrowser1_Navigated(...)

您是说“导航”而不是“导航”? 因为如果是这样,您将导致在Navigate内部调用Navigate的循环服从。

您必须转到webBroswer控件的属性,并删除指向webBroswer1.Navigated的事件处理程序。 您可能不想在任何与导航相关的事件处理程序中使用导航命令,因为在体验过程中可能会出现不可预测的循环。

将您的代码放在webBrowser1.ControlAdded中。 在构建表单并将Web浏览器添加到其父容器时调用此方法。 它只会被调用一次,并且与导航过程无关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM