禁用编辑web浏览器在C#

问题描述 投票:1回答:3

所以我一直在做这个项目,我们有窗体上的web浏览器对象。对象的目的是,它在加载HTML表单到它被观看,在时间虽然这当前点,你就可以编辑HTML表单,这是不希望的内容。

我想简单的展示的信息给用户这个HTML表单,但不允许他们改变文本框或复选框或窗体上的这种性质的东西。

我尝试使用导航事件,并e.cancel = TRUE ;.这haulted从连的页面加载控制。如果我将它设置为只执行e.cancel = TRUE;形式已经加载之后,我仍然可以改变窗体上文本框和这样的,因为它似乎只是随机调用导航事件。

有谁知道的一种方式来获得一个WebBrowser对象是只读的?

干杯!

c# browser readonly
3个回答
0
投票

你可以尝试访问该网页上的所有表单元素,并设置标签上的只读属性。就像是:

var inputs = webBrowser1.Document.GetElementsByTagName("input");
foreach (HtmlElement element in inputs)
{
  element.SetAttribute("readonly", "readonly");
}

你显然有重复该过程为所有的表单元素(选择等),但它应该工作。


0
投票

您可以申请contentEditable属性文件的Body标签。

Document.Body.SetAttribute("contentEditable", false);

这会让你的文件只读用户。


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,身体还没有加载和行会抛出。

© www.soinside.com 2019 - 2024. All rights reserved.