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

时间:2014-12-18 18:20:04

标签: c# html

我正在尝试创建自己的网络浏览器,打开我创建的本地存储的网页。我是新手用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)
    {           
    }
}

我该怎么做才能修复循环?我知道我错过了什么,但不确定是什么。

2 个答案:

答案 0 :(得分:0)

你的帖子在哪里

private void webBrowser1_Navigated(...)
你是说&#34;导航&#34;而不是&#34;导航&#34;?因为如果是这样,你导致循环oby调用Navigate里面的Navigate。

答案 1 :(得分:0)

您必须转到webBroswer控件的属性并删除指向webBroswer1.Navigated的事件处理程序。您可能不希望在与导航关联的任何事件处理程序中都有导航命令,因为您可能会遇到不可预测的循环。

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