wpf下如何去除webbrowser的滚动条

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf下如何去除webbrowser的滚动条相关的知识,希望对你有一定的参考价值。

参考技术A 方法一:适用于VS2008 1、在解决方案中添加“引用” 选择COM 下的 Microsoft html object library 2、引入命名空间 using mshtml; 3、添加 WebBrowser 事件 在WebBrowser 的 LoadCompleted 事件里 mshtml.HTMLDocumentClass dom = (mshtml.HTMLDocumentClass)webBrowserCygj.Document; //定义HTML dom.documentElement.style.overflow = "hidden"; //隐藏浏览器的滚动条 dom.body.setAttribute("scroll", "no"); //禁用浏览器的滚动条 方法二:适用于VS2010 1、在解决方案中添加“引用” 选择COM 下的 Microsoft html object library 2、引入命名空间 using mshtml; 3、添加 WebBrowser 事件 在WebBrowser 的 LoadCompleted 事件里 mshtml.HTMLDocument dom = (mshtml.HTMLDocument)webBrowserCygj.Document; //定义HTML dom.documentElement.style.overflow = "hidden"; //隐藏浏览器的滚动条 dom.body.setAttribute("scroll", "no"); //禁用浏览器的滚动条 注1:出于MS的某些原因,在VS2010下,HTMLDocumentClass 需更改为HTMLDocument 方可生效。 注2:通过页面代码控制浏览器窗口滚动条 overflow-y:hidden '表示没有垂直滚动条 overflow-x:hidden '表示没有水平滚动条 scroll:no或overflow-x:hidden;overflow-y:hidden或overflow:hidden '让浏览器窗口永远不出现滚动条 例: 注3:“隐藏浏览器的滚动条”和“禁用浏览器的滚动条”同时使用,方可实现对所有页面有效。

WPF c# webbrowser 在顶部菜单上滚动

【中文标题】WPF c# webbrowser 在顶部菜单上滚动【英文标题】:WPF c# webbrowser scrolls over top menu 【发布时间】:2012-04-17 04:56:06 【问题描述】:

我有一个网格,里面有一个菜单和一个滚动查看器。在滚动查看器中,我有一个带有另一个网格和 webbrowser 元素内的组框。

现在,当我将窗口设置为小于 webbrowser 内容的内容并在滚动查看器中向下滚动时,就会出现问题。一切都有边距,因此它保持在顶部菜单下方,但是 webbrowser 元素没有,因此覆盖了菜单。有没有办法解决这个问题?我无法弄清楚:s Margins & Paddings 不起作用。我希望它周围的网格元素或其他东西可以解决问题,但没有任何效果。

编辑:

好的,我尝试添加 xaml 代码,但请记住它非常庞大,因此这是极短的版本:(webbrowser 元素位于代码底部)

<Window x:Class="Cleaning_Masters_Official.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Cleaning Masters Offerte Packet - nieuw.off" Name="Main"  Width="DynamicResource x:Static SystemParameters.MaximizedPrimaryScreenWidthKey"
        Icon="bin\Debug\Images\Main.ico"
    Height="DynamicResource x:Static SystemParameters.MaximizedPrimaryScreenHeightKey" Closing="Main_Closing"
    WindowStartupLocation="CenterScreen" WindowStyle="SingleBorderWindow" WindowState="Maximized">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="22" />
            <RowDefinition Height="*" />
            <RowDefinition Name="rowbar" Height="0" />
        </Grid.RowDefinitions>

        <ScrollViewer Margin="10" Grid.Row="1">
            <TabControl Name="tabChapters">

                <TabItem Header="Algemeen" Name="tabGeneral">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="auto" />
                            <RowDefinition Height="*" />
                        </Grid.RowDefinitions>

                        <GroupBox Header="Configureer hoofdstukken:" Margin="10" Padding="10">
                            <Grid>
                                ...     
                            </Grid>
                        </GroupBox>

                        <GroupBox Header="Voorpagina Afbeeldingen:" Margin="10,0,10,10" Padding="10" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2">
                            <Grid VerticalAlignment="Top">
                                ...     
                            </Grid>
                        </GroupBox>

                        <GroupBox Header="Offerte Info:" Margin="10,10,10,10" Padding="10" Grid.Column="1" Grid.Row="0">
                            <Grid>
                                ...     
                            </Grid>
                        </GroupBox>

                        <GroupBox Margin="0,10,10,10" Header="Inhoudstafel:" Grid.Column="2" Grid.RowSpan="2">
                            <Grid>
                                <WebBrowser Margin="10" Name="wbInhoudstafel"/>
                            </Grid>
                        </GroupBox>
                    </Grid>
                </TabItem>

                <TabItem Header="1. Voorwoord" Name="tabVoorwoord">
                </TabItem>
                    ...         
                </TabItem>
            </TabControl>
        </ScrollViewer>

        <Menu DockPanel.Dock="Top" Name="TopMenu">
            ...     
        </Menu>

        <StatusBar Name="sbar" Grid.Row="2"
            ...     
        </StatusBar>
    </Grid>
</Window>

【问题讨论】:

好的,添加了精简版的xaml代码 【参考方案1】:

WPF WebBrowser 控件基本上是旧的 Win32 Webbrowser 控件,在技术上呈现在 WPF 内容之上。此外,它在大小计算方面存在一些严重问题。

看 http://msdn.microsoft.com/en-us/library/aa970688(v=vs.85).aspx

恐怕没有办法告诉 WebBrowser 控件改变这种行为。

但也有替代控制:

http://wpfchromium.codeplex.com/

http://awesomium.com/

编辑:

在 SO 上找到了一个很好的总结,其中指出了一些替代方案:

WPF WebBrowser (3.5 SP1) Always on top - other suggestion to display HTML in WPF

【讨论】:

以上是关于wpf下如何去除webbrowser的滚动条的主要内容,如果未能解决你的问题,请参考以下文章

WPF中使用WebBrowser控件,怎么自定义它的滚动条样式

c# WebBrowser 控件滚动条

WPF c# webbrowser 在顶部菜单上滚动

wpf 动态添加滚动条

VB WebBrowser滚动条总在最下方

Duilib中使用webbrowser