簡體   English   中英

在C#中禁用編輯WebBrowser

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM