【问题标题】:Change Webbrowser background color in WPF更改 WPF 中的 Webbrowser 背景颜色
【发布时间】:2012-05-27 18:06:26
【问题描述】:

我的 xaml 代码中有 webbrowser 控件,我想更改它的文档背景颜色。

<WebBrowser  Source="http://google.com" x:Name="IE" Navigated="IE_Navigated" />



private void IE_Navigated(object sender, NavigationEventArgs e)
{
    HtmlDocument document = (HtmlDocument)IE.Document;
    var color = System.Drawing.Color.Black;
    document.BackColor = color;
}

它不工作;

【问题讨论】:

    标签: html wpf colors background browser


    【解决方案1】:

    它不起作用的原因是因为您混合使用了 WPF WebBrowser 和 WinForms WebBrowser,它们不兼容。

    您的 XAML 正在创建 WPF WebBrowser,但在 Navigated 事件中,您将 IE.Document 转换为 HtmlDocument,这是 WinForms WebBrowser 的类型。因此,该演员将失败。

    即使您将其更改为工作,还有一个问题是导航事件在下载开始后触发,而不是在下载完成后触发(如 MSDN 中所述)。 WPF WebBrowser 没有像 WinForms WebBrowser 那样的 DocumentCompleted 事件。

    如果您想在 WPF 应用程序中使用此功能,一种简单的方法是使用 WinForms WebBrowser 而不是 WPF 版本。这是通过将其托管在 WindowsFormsHost 中来完成的,如下所示:

        <wfi:WindowsFormsHost Name="host" />
    

    您必须包含对 System.Windows.Forms(您可能已经拥有)和 WindowsFormsIntegration 的引用,然后将命名空间定义为:

    xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
    

    在代码隐藏中:

      webBrowser = new System.Windows.Forms.WebBrowser();
      host.Child = webBrowser;
    

    然后导航:

      webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
      webBrowser.Navigate("http://google.com");
    

    然后要将背景设置为黑色,您可以在身体上这样做,如下所示:

    void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
      HtmlDocument document = (HtmlDocument)webBrowser.Document;
      document.Body.Style = "background-color:black";
    }
    

    我已经测试过了,它可以工作。

    【讨论】:

      猜你喜欢
      • 2011-08-29
      • 2011-11-24
      • 1970-01-01
      • 2015-10-10
      • 2010-11-19
      • 1970-01-01
      • 2011-09-25
      • 2019-05-15
      相关资源
      最近更新 更多