[英]Disable Editing WebBrowser in C#
因此,我一直在从事这个项目,并且表单上有一个WebBrowser对象。 该对象的目的是将其加载到HTML表单中以供查看,但是在当前时间点,您可以编辑HTML表单的内容,这是不需要的。
我只想向用户显示此HTML形式的信息,但不允许他们更改文本框或复选框或表单上任何具有这种性质的内容。
我尝试使用导航事件并设置e.cancel = true;。 这使控件无法加载页面。 如果我将其设置为仅执行e.cancel = true; 加载表单后,我仍然可以更改文本框等表单,因为它似乎只是随机调用了Navigating事件。
有谁知道一种使WebBrowser对象为只读的方法吗?
干杯!
您可以尝试访问页面上的所有表单元素,并在标签上设置readonly属性。 就像是:
var inputs = webBrowser1.Document.GetElementsByTagName("input");
foreach (HtmlElement element in inputs)
{
element.SetAttribute("readonly", "readonly");
}
您显然必须对所有表单元素(选择等)重复此过程,但是它应该可以工作。
您可以将contentEditable
属性应用于文档的Body
标签。
Document.Body.SetAttribute("contentEditable", false);
这将使您的文档对用户只读。
我也一直在遇到这个问题。 多亏了steavy,我得以提出一个解决方案:
连接到DocumentCompleted
事件(您可以在设计器中执行此操作):
myWebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_procedure_DocumentCompleted);
然后在事件中将其设置为只读:
private void myWebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
myWebBrowser.Document.Body.SetAttribute("contentEditable", "false");
}
我会在文档完全加载的情况下执行此操作,因为有时我会遇到NullReferenceException
,但正文尚未加载,并且该行会抛出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.