禁用在C#中编辑WebBrowser

时间:2012-06-26 16:04:42

标签: c# browser readonly

所以我一直在研究这个项目,我们在表单上有一个WebBrowser对象。该对象的目的是将HTML表单加载到其中以供查看,但是在当前时间点,您可以编辑HTML表单的内容,这是不可取的。

我想简单地向用户显示这种HTML形式的信息,但不允许他们在表单上更改文本框或复选框或任何此类信息。

我尝试使用Navigating事件并设置e.cancel = true;。这甚至加载了控件甚至加载页面。如果我将其设置为仅执行e.cancel = true;表单加载后,我仍然可以在表单上更改文本框等,因为它似乎只是随机调用导航事件。

有没有人知道如何让WebBrowser对象只读?

干杯!

3 个答案:

答案 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,但正文尚未加载,并且该行会抛出。