页面加载时ScrollBar显示在WebBrowser中

时间:2014-05-07 18:54:56

标签: c# html wpf iframe webbrowser-control

编辑:我将属性更改为隐藏,但它仍然显示。

我已经阅读了这个问题的10种不同变体,所有这些变体似乎都有不同的解决方案,但这些解决方案都不适用于我。

我有一个带有WebBrowser的WPF窗口,如下所示(你可以看到我已经非常彻底地试图确保隐藏垂直滚动条):

<Window x:Class="ZendeskWebApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="460" Width="700" ScrollViewer.VerticalScrollBarVisibility="Hidden">
    <Grid ScrollViewer.VerticalScrollBarVisibility="Hidden">
        <WebBrowser Name="_browser" ScrollViewer.VerticalScrollBarVisibility="Hidden"/>
    </Grid>
</Window>

在我正在加载本地html页面的代码中:

public MainWindow()
{
    InitializeComponent();
    this._browser.Source = new Uri(new System.IO.FileInfo("AskAQuestion.htm").FullName);
}

这是该页面上唯一的内容:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title>Ask A Question</title>
    </head>
        <body>
            <div>
                <iframe src="http://mysite.zendesk.com/account/dropboxes/123456" width="100%" height="100%" frameborder=0></iframe>
            </div>
        </body>
    </html>

唯一应该显示的滚动条是iframe滚动条,但只要页面在iframe中加载,就会加载垂直滚动条。没有加载页面时,没有滚动条。

为什么会这样?

2 个答案:

答案 0 :(得分:0)

您是否在WebBrowser对象上尝试过这种设置组合?

ScrollViewer.CanContentScroll="False"
ScrollViewer.HorizontalScrollBarVisibility="Hidden" 
ScrollViewer.VerticalScrollBarVisibility="Hidden" />

答案 1 :(得分:0)

这个解决方案对我有用:

XAML:

<WebBrowser Name="MyWebBrowser" LoadCompleted="WebBrowserOnLoadCompleted">


代码隐藏:

private void WebBrowserOnLoadCompleted(object sender, NavigationEventArgs e)
{
    HideScrollbars(MyWebBrowser);
}

private void HideScrollbars(WebBrowser wb)
{
    const string script = "document.body.style.overflow ='hidden'";
    wb.InvokeScript("execScript", new Object[] { script, "JavaScript" });
}