Ben*_*est 9 .net c# webbrowser-control winforms
我有一个WebBrowser
文档设置为编辑模式.我试图通过使用来操纵body元素的内部文本WebBrowser.Document.Body.InnerText
,但是,WebBrowser.Document.Body
仍然为null.
这是我创建文档内容的代码:
private WebBrowser HtmlEditor = new WebBrowser();
public HtmlEditControl()
{
InitializeComponent();
HtmlEditor.DocumentText = "<html><body></body></html>";
myDoc = (IHTMLDocument2)HtmlEditor.Document.DomDocument;
myDoc.designMode = "On";
HtmlEditor.Refresh(WebBrowserRefreshOption.Completely);
myContentsChanged = false;
}
Run Code Online (Sandbox Code Playgroud)
我可以编辑代码,一切都很好,但我不明白为什么HtmlEditor.Document.Body
仍然是null.我知道每当我需要将文本加载到表单中时,我总是可以重置文档正文,但我更愿意理解为什么它的行为方式,如果没有别的知识.
非常感谢任何帮助.
您必须等待Web浏览器的DocumentCompleted
事件触发DomDocument.Body
才能为空.我刚测试了这个来验证.我想这个问题仍然存在:当文档没有完全加载时,你如何通过底层的COM接口进行编辑?
我检查IHTMLDocument2
了DocumentCompleted和构造函数中的指针是否相同.它们可能表示底层COM对象重用单个HTML文档对象.看起来你在构造函数中做的任何更改至少有很大的机会被覆盖或抛出异常.
例如,如果我在构造函数中执行此操作,则会收到错误:
IHTMLDocument2 p1 = (IHTMLDocument2) HTMLEditor.Document.DomDocument;
p1.title = "Hello world!";
Run Code Online (Sandbox Code Playgroud)
如果我在DocumentCompleted处理程序中执行相同操作,它可以正常工作.
希望这可以帮助.谢谢.
归档时间: |
|
查看次数: |
13955 次 |
最近记录: |