我的Windows窗体应用程序中有WebBrowser
控件,但它只是不加载文档。
这是我的代码:
webBrowser1.Navigate(@"C:\Pages\myLocalWebPage.html");
File.WriteAllText(path,webBrowser1.Document.Body.Parent.OuterHtml, Encoding.GetEncoding(webBrowser1.Document.Encoding));
它在第二行给了我null reference exception
。我想文件根本没有实例化。
答案 0 :(得分:1)
您尝试访问尚未加载的文档 ,因为您在导航到新的Uri之后访问Document
属性,这就是您获得{{}的原因1}}。
您需要使用WebBrowser.DocumentCompleted
事件。
该事件什么时候被解雇?
在MSDN中,只要设置了以下某个属性或调用了方法,NullReferenceException
控件就会导航到新文档:Url,DocumentText,DocumentStream,Navigate,GoBack,GoForward, GoHome,GoSearch。
导航将按此顺序触发以下事件:
WebBrowser
事件:
处理导航事件以在导航前接收通知 开始即可。处理此事件可让您取消导航(如果确定) 例如,当用户没有满足条件时 完全填写表格。
Navigating
事件:
处理Navigated事件以在WebBrowser时接收通知 控制完成导航,已开始加载文档 新的位置。
Navigated
事件:
处理DocumentCompleted事件以接收时的通知 新文档完成加载。当DocumentCompleted事件发生时 发生,新文档已满载,这意味着您可以访问 其内容通过Document ,DocumentText或DocumentStream 属性。
我控制不可见。它不应该被使用 user.I我只是想从代码隐藏
加载文档
控件不可见的事实应该不是问题。我已经使用在运行时创建的DocumentCompleted
进行了测试,但我没有添加到表单中(请参阅下面的示例),并且仍然会引发该事件。
它是如何被激活的?
以下是可能的实施:
webbrowser
另见此帖子Can I wait for a webbrowser to finish navigating, using a for loop?
答案 1 :(得分:0)
您的本地文件路径需要类似于此引用(文件://是密钥):
Uri uri = new Uri("file://C:/Pages/myLocalWebPage.html");
webBrowser1.Navigate(uri);