我试图让滚动条与网页浏览器控制工作。不过,我会用它来显示一个消息框自定义的消息,我不想,即使它不需要滚动条出现 - 因为它似乎在默认情况下做的。为了避免这个,我决定禁止在控制滚动条,而是像一个面板里的其他控制使用滚动条。这样,当浏览器页面的内容是太大,不适合他们会才会出现。

这还没有想出太好,虽然我已经看了不少帖子,甚至在计算器上,在那里,这似乎是一个有效的解决方案。一个例子是,当我试图在这里使用的解决方案:

用web浏览器控件包含

滚动问题在面板控制

这好像如果滚动条的网页浏览器中禁用,它不会让面板使用滚动条无论是。这似乎在设计模式测试时是这样。为了克服这个我尝试添加面板内的Web浏览器后面的图片框;它工作时,在设计模式(调整图片框和网络浏览器将导致面板启用它的滚动条),但在运行时没有工作(我添加的代码有图片框切换到Web浏览器控件的大小 - 其本身总是调整大小以适合的可滚动内容的大小)。

我也尝试编程启用和禁用基于Web浏览器的滚动条,如果ScrollableRectangle大小比对照的尺寸更大。这在理论上会好一些,但它似乎ScrollbarsEnabled属性更改任何时间来清除控制之内的所有文本 - 并且因此改回不具有滚动条

我用下面的代码,每当一个键在控制压这样,有效地称为:

if (Output.Document.Body != null)
{
    if (Output.Document.Body.ScrollRectangle.Size.Height > Output.Size.Height
            || Output.Document.Body.ScrollRectangle.Size.Width > Output.Size.Width)
        Output.ScrollBarsEnabled = true;
    else
        Output.ScrollBarsEnabled = false;
}
else
    Output.ScrollBarsEnabled = false;

同样重要的是要注意,我还需要将应用程序中使用的HTML编辑器的解决方案,因此,最好任何解决方案将不依赖于一个页面加载事件等等,因为这些似乎并不时触发Web浏览器拥有设计模式设定为开(它作为一个HTML编辑器工作,这是需要)。然而,在这种特殊情况,我可以回退到上启用默认的滚动条,如果有没有更好的解决方案。

编辑:需要明确的是,我不是在谈论HTML内容中的任何滚动条 - 这是无关紧要的HTML仅仅用来允许文本的灵活的格式。我只是在谈论浏览器控件自身的滚动条。

任何帮助非常赞赏。谢谢!。

有帮助吗?

解决方案

我结束了,现在找到了一个解决这个前一段时间,但忘了在这里发表。基本上,我所做的就是第一个默认启用的滚动条,使他们的工作,但总是出现。然后创建了一个面板控制和尺寸过来的是在网络浏览器控制的右侧显示的非活动滚动条的顶部。

接着我改变滚动条板的锚定件,使得顶部,底部,和右边总是卡入形式的大小,因此,浏览器控件的大小作为它的所有边缘太被锚定。

然后,我添加一些代码,检查在 ScrollRectangle 尺寸,并与浏览器相比它,如果它被证明是高度或宽度较大的,然后,我提出的盖板不可见,但否则留在适当位置。

下面是有关的代码片断:

            //If still bigger, set scrollbars:

            if ((Output.Document.Body.ScrollRectangle.Size.Height > Output.Size.Height) ||
                Output.Document.Body.ScrollRectangle.Size.Width > Output.Size.Width)
            {
                ScrollPanel.Visible = false;
                ScrollPanel.Enabled = false;
            }

希望这可以帮助别人的未来一样,拍了几张不同的方法之前,我发现一个已经足够好了。

我已经决定了盛的回答(当我得到足够的声誉)为,首先,他是唯一的人的反应,其次,他的信息,帮助我,当我正在考虑使用某种调用的尝试使运行时的滚动条。虽然我发现我的解决方案简单,一样有效。

其他提示

这是为时已晚。创建web浏览器时IDocHostUIHandler.GetHostInfo被调用,并且web浏览器的实现是根据它的ScrollBarsEnabled属性的值设置DOCHOSTUIFLAG_SCROLL_NO或DOCHOSTUIFLAG_FLAT_SCROLLBAR标志。

我建议你创建WebBrowser控件的窗口前ScrollBarsEnabled设置为false。

如果你不希望一个特定的元素,如身体,格或textarea的滚动条,出现,可以设置自己的风格溢出特定的元素,如DOC =“隐藏”或使用滚动属性。 Body.SetAttribute( “滚动”, “否”)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top