1

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;
}

動いていない;

4

1 に答える 1

3

機能しない理由は、WPF WebBrowser と WinForms WebBrowser が混在していて、互換性がないためです。

XAML は WPF WebBrowser を作成していますが、Navigated イベントでは、IE.Document を WinForms WebBrowser のタイプである HtmlDocument としてキャストしています。したがって、そのキャストは失敗します。

動作するように変更しても、Navigated イベントは、ダウンロードが終了した後ではなく、ダウンロードが開始されると発生するという別の問題があります ( MSDNで文書化されているように)。WPF WebBrowser には、WinForms WebBrowser のような DocumentCompleted イベントはありません。

WPF アプリケーションでこの機能が必要な場合は、WPF バージョンの代わりに WinForms WebBrowser を使用するのが簡単な方法です。これは、以下に示すように、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");

次に、背景を黒に設定するには、次のように body で行います。

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

私はこれをテストしましたが、動作します。

于 2012-07-12T08:16:42.377 に答える