【问题标题】:How to force WebBrowser Control to repaint and redraw the webpage elements如何强制 WebBrowser 控件重绘和重绘网页元素
【发布时间】:2015-12-19 16:24:02
【问题描述】:

我在表单中使用 webbrowser 控件。为了允许用户操作网页,我将控件添加到一个新表单中,用户可以在其中隐藏一些 HTML 元素。这就是我隐藏元素的方式:

  IHTMLElement2 dom = item.DomElement as IHTMLElement2;
  dom.runtimeStyle.visibility = "hidden";

当用户关闭第二个表单时,我切换隐藏和可见元素并将 WebBrowser 再次添加到我的主表单中。这是切换元素可见性的代码,为此我将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_closing 中甚至在form2.ShowDialog() 之后在主窗体中调用了上述过程,但是这些更改不会反映在控件上,除非我最小化和最大化主窗体。如果我不切换元素的可见性,我应该添加,更改会反映!此外,如果我将上面的代码放在按钮的click 事件中,则会显示所需的更改。

我使用了 webbrowserRefresh 方法,但它实际上重新加载了文档,然后我使用了主窗体的Refresh 方法,但它也不起作用。我想知道文档及其元素的可见性是如何刷新的。

【问题讨论】:

  • 如果确定需要重绘控件,可以试试webBrowser1.Invalidate();
  • @RezaAghaei 当我最小化和最大化主窗体时,我看到了所需的内容。但是,在form2.ShowDialog() 之后使用invalidate() 也不起作用。
  • 所以也许最好分享一个简单的代码来重现问题。因为现在我们只能猜测。
  • @RezaAghaei 我尝试过,但我只是想知道当我最小化和最大化表单时 WebBrowser Document 会发生什么,除了重绘和无效。
  • 我测试了这样的场景,它工作正常。在没有看到整个复制代码的情况下,我不知道可能导致问题的原因。

标签: c# winforms controls webbrowser-control


【解决方案1】:

正如我测试的那样,在关闭form2并将webbrowser添加到主窗体后,我必须在主窗体中调用webbrowser,如下所示:

        FormBrowser browser = new FormBrowser();
        browser.Browser = webBrowser1;

        browser.ShowDialog();


        // Readd the webbrowser1
        panel1.Controls.Add(webBrowser1);
        webBrowser1.Location = loc;
        webBrowser1.Size = size;
        webBrowser1.BringToFront();

        // if this function is called in `Closing` 
        // event of form2, the chanes are not reflected.

        SwitchVisibility(addedElements);
        /// To reassure repainting (however it works without it too)
        webBrowser1.Invalidate();

【讨论】:

    猜你喜欢
    • 2018-04-24
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多