[英]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.