所以我一直在研究这个项目,我们在表单上有一个WebBrowser对象。该对象的目的是将HTML表单加载到其中以供查看,但是在当前时间点,您可以编辑HTML表单的内容,这是不可取的。
我想简单地向用户显示这种HTML形式的信息,但不允许他们在表单上更改文本框或复选框或任何此类信息。
我尝试使用Navigating事件并设置e.cancel = true;。这甚至加载了控件甚至加载页面。如果我将其设置为仅执行e.cancel = true;表单加载后,我仍然可以在表单上更改文本框等,因为它似乎只是随机调用导航事件。
有没有人知道如何让WebBrowser对象只读?
干杯!
答案 0 :(得分:0)
您可以尝试访问页面上的所有表单元素,并在标记上设置readonly属性。类似的东西:
var inputs = webBrowser1.Document.GetElementsByTagName("input");
foreach (HtmlElement element in inputs)
{
element.SetAttribute("readonly", "readonly");
}
您显然必须为所有表单元素重复此过程(选择等),但它应该有效。
答案 1 :(得分:0)
您可以将contentEditable
属性应用于文档的Body
标记。
Document.Body.SetAttribute("contentEditable", false);
这将使您的文档只读给用户。
答案 2 :(得分:0)
我也一直在遇到这个问题。多亏了Steavy,我才得以提出解决方案:
了解DocumentCompleted
事件(您可以在设计器中完成):
myWebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_procedure_DocumentCompleted);
然后在事件中将其设置为只读:
private void myWebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
myWebBrowser.Document.Body.SetAttribute("contentEditable", "false");
}
在文档完全加载的情况下,我这样做是因为有时我碰到了NullReferenceException
,但正文尚未加载,并且该行会抛出。