【问题标题】:hide webBrowser scrollbar wpf隐藏 webBrowser 滚动条 wpf
【发布时间】:2013-03-16 00:04:45
【问题描述】:

我有一个网络浏览器,我正在加载一个 .html 文件。问题是虽然我已经将 ScrollViewer.VerticalScrollBarVisibility 设置为“隐藏”,但滚动条仍然可见。

这个方法我也试过了,还是不行

<WebBrowser x:Name="personalizedWebBrowser" HorizontalAlignment="Left"  VerticalAlignment="Top" 
                ScrollViewer.CanContentScroll="False"
                ScrollViewer.HorizontalScrollBarVisibility="Hidden" 
                ScrollViewer.VerticalScrollBarVisibility="Hidden"
                LoadCompleted="wb_LoadCompleted"/>


private void wb_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
     mshtml.IHTMLDocument2 dom = (mshtml.IHTMLDocument2)personalizedWebBrowser.Document;
     dom.body.style.overflow = "hidden";
}

您能提出其他建议吗?

【问题讨论】:

标签: c# wpf browser scrollbar


【解决方案1】:

我通过在 wpf 项目中使用 windows 窗体 WebBrowser 控件解决了这个问题:

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        string curDir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\help";

        System.Windows.Forms.Integration.WindowsFormsHost host =
            new System.Windows.Forms.Integration.WindowsFormsHost();
        System.Windows.Forms.WebBrowser webBrowser1 = new System.Windows.Forms.WebBrowser();
        host.Child = webBrowser1;

        webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;

        string sFileName = "file:///{0}/index.html";

        webBrowser1.Url = new Uri(String.Format(sFileName, curDir));
        webBrowser1.ScrollBarsEnabled = false;
        this.grid1.Children.Add(host);
    }

    private void webBrowser1_DocumentCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e)
    {
        System.Windows.Forms.WebBrowser webBrowser1 = sender as System.Windows.Forms.WebBrowser;
        if(webBrowser1==null)return;
        webBrowser1.Document.Body.Style = "overflow:hidden";
    }

grid1 用作 webBrowser1 的容器

我们还需要在项目中添加以下程序集引用: WindowsFormsIntegration、System.Windows.Forms

【讨论】:

    【解决方案2】:

    将 Microsoft.mshtml 添加到您的项目引用中。您不需要更改 xaml 中的任何滚动属性,因为在使用 mshtml 时它们不是控制 WebBrowser 的属性。在 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)
    }
    

    【讨论】:

      【解决方案3】:

      对于使用VS2019的vb.net,修改DevDude的解决方案如下:

      Private Sub webObjectLoaded(ByVal sender as WebBrowser, Byval as NavigationEventArgs)
        Dim dom as MSHTML.IHTMLDocument2 = sender.Document
        dom.body.style.overflow = "hidden"
      End Sub
      

      我在堆栈面板中显示了多个浏览器,因此调用代码如下所示:

      Dim wb = New WebBrowser()
      wb.NavigateToString(txt)
      AddHandler wb.LoadCompleted, AddressOf webObjectLoaded
      

      我从 COM 添加了对“Microsoft HTML 对象库”的引用,它似乎在引用列表中显示为 Interop.MSHTML。

      【讨论】:

        猜你喜欢
        • 2013-10-14
        • 1970-01-01
        • 2012-10-07
        • 2013-03-01
        • 2014-04-07
        • 1970-01-01
        • 2012-12-21
        相关资源
        最近更新 更多