12

Web ブラウザーのスクロールバーを非表示にしようとしていますが、まだ表示されています。

XAML:

<WebBrowser Name="wb" Width="700" Height="600" 
                        OverridesDefaultStyle="False"
                        ScrollViewer.CanContentScroll="False"
                        ScrollViewer.HorizontalScrollBarVisibility="Hidden" 
                        ScrollViewer.VerticalScrollBarVisibility="Hidden" />

ありがとうございました。

4

10 に答える 10

22

This works for me:

<WebBrowser LoadCompleted="wb_LoadCompleted"></WebBrowser>           

void wb_LoadCompleted(object sender, NavigationEventArgs e)
    {
        string script = "document.body.style.overflow ='hidden'";
        WebBrowser wb = (WebBrowser)sender;
        wb.InvokeScript("execScript", new Object[] { script, "JavaScript" });
    }

This way you don't need mshtml

于 2013-03-09T09:21:44.660 に答える
8

理想的ではありませんが、機能します:

プロジェクト参照に Microsoft.mshtml を追加します。次に、xaml を次のように変更します。

<WebBrowser Name="wb" Width="700" Height="600" 
            OverridesDefaultStyle="False"
            ScrollViewer.CanContentScroll="False"
            ScrollViewer.HorizontalScrollBarVisibility="Hidden" 
            ScrollViewer.VerticalScrollBarVisibility="Hidden"
            LoadCompleted="wb_LoadCompleted"></WebBrowser>

そしてあなたのコードビハインドで:

private void wb_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
    mshtml.IHTMLDocument2 dom = (mshtml.IHTMLDocument2)wb.Document;
    dom.body.style.overflow = "hidden";
}
于 2012-10-17T09:02:02.433 に答える
4

あなたのhtmlで....

 html{overflow:hidden;}

それはそれを解決するか、メタタグを使用してIEレンダリングモードを指定できます

<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
于 2013-05-07T11:03:37.903 に答える
1

プロジェクト参照に Microsoft.mshtml を追加します。mshtml の使用時に Web ブラウザーを制御するものではないため、XAML のスクロール プロパティを変更する必要はありません。LoadCompleted 関数で、次の操作を行います。

private void webBrowserChat_LoadCompleted(object sender, NavigationEventArgs e)
{
    mshtml.IHTMLDocument2 documentText = (IHTMLDocument2)webBrowserChat.Document; 
    //this will access the document properties 
    documentText.body.parentElement.style.overflow = "hidden"; 
   // This will hide the scrollbar (Set to "auto" if you want to see when it passes the surfacelimit)
}
于 2016-05-26T18:19:41.050 に答える
0

WebBrowser コントロールの幅を、スクロールバーの幅である 16 ピクセル分、表示領域よりも広くしました。

これは、Web ブラウザー コントロールがアプリの右端に触れている場合にのみ機能します。Web ブラウザー コントロールでは、他の XAML 要素をその上に配置することはできませんが、アプリの端からオーバーフローさせることができます。

ウィンドウの Loaded イベント ハンドラーでこれを実行しました。

private void AppLoaded(object sender, RoutedEventArgs routedEventArgs)
{
    WebBrowserView.Width = WebBrowserView.ActualWidth + 16;
}

ページに JavaScript を挿入すると一部のページが壊れるように見え、スクロールバーはページの読み込みが完了するまで消えませんでした。

于 2013-08-21T14:41:37.113 に答える