所以我一直在做这个项目,我们有窗体上的web浏览器对象。对象的目的是,它在加载HTML表单到它被观看,在时间虽然这当前点,你就可以编辑HTML表单,这是不希望的内容。
我想简单的展示的信息给用户这个HTML表单,但不允许他们改变文本框或复选框或窗体上的这种性质的东西。
我尝试使用导航事件,并e.cancel = TRUE ;.这haulted从连的页面加载控制。如果我将它设置为只执行e.cancel = TRUE;形式已经加载之后,我仍然可以改变窗体上文本框和这样的,因为它似乎只是随机调用导航事件。
有谁知道的一种方式来获得一个WebBrowser对象是只读的?
干杯!
你可以尝试访问该网页上的所有表单元素,并设置标签上的只读属性。就像是:
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
,身体还没有加载和行会抛出。