1
我在窗體中使用了webbrowser控件。爲了允許用戶操作網頁,我將該控件添加到用戶可以隱藏一些HTML元素的新窗體中。這是我如何隱藏的元素:如何強制WebBrowser控件重新繪製並重繪網頁元素
IHTMLElement2 dom = item.DomElement as IHTMLElement2;
dom.runtimeStyle.visibility = "hidden";
當用戶關閉該第二種形式,我轉了隱藏和可見的元素,然後再添加web瀏覽器到我的主要形式。這是代碼切換元素的可見性,要做到這一點我做可見body
隱蔽性和隱藏要素:
void SwitchVisibility()
{
IHTMLElement bodyDom = wb.Document.Body.DomElement as IHTMLElement;
bodyDom.style.visibility = "hidden";
foreach (var item in addedElements)
{
IHTMLElement2 dom = item.DomElement as IHTMLElement2;
dom.runtimeStyle.visibility = "visible";
}
}
我打電話,即使和主窗體form2.ShowDialog()
後一次以上form2_closing
的過程,但除非我最小化和最大化主要形式,否則這些更改不會反映在控件上。如果我不切換元素的可見性,我應該添加,這些更改會反映出來!另外,如果我將上面的代碼放在按鈕的click
事件中,則會顯示所需的更改。
我使用的網頁瀏覽器的方法Refresh
,但它實際上重新加載該文件,然後我用的主要形式的Refresh
方法,但它也不起作用。我想知道文檔及其元素的可見性如何刷新。
如果你確定你需要重繪控制,你可以嘗試'webBrowser1.Invalidate();' –
@RezaAghaei當我最小化和最大化主窗體時,我看到了期望的內容。然而,在'form2.ShowDialog()'後面使用'invalidate()'也不起作用。 – Ahmad
所以也許最好共享一個簡單的代碼來重現問題。因爲現在我們只能猜測一些事情。 –