我正在尝试让滚动条与 Web 浏览器控件一起使用。但是,由于我将使用它来显示自定义消息框的消息,因此即使不需要滚动条,我也不希望出现滚动条 - 就像默认情况下那样。为了避免这种情况,我决定禁用控件上的滚动条,而是在另一个控件(如面板)上使用滚动条。这样,它们只会在浏览器页面的内容太大而无法容纳时出现。
虽然我已经阅读了很多帖子,即使在 StackOverflow 上,这似乎是一个有效的解决方案,但效果并不好。一个例子是当我在这里尝试使用解决方案时:
Panel 控件中包含的 WebBrowser 控件的滚动问题
似乎如果 Web 浏览器禁用了滚动条,它也不会让面板使用滚动条。在设计模式下进行测试时似乎就是这种情况。为了克服这个问题,我尝试在面板内的网络浏览器后面添加一个图片框;它在设计模式下工作(调整图片框和 Web 浏览器的大小会导致面板启用其滚动条),但在运行时不起作用(我添加了代码以将图片框更改为 Web 浏览器控件的大小 -它本身总是调整大小以适应可滚动内容的大小)。
我还尝试根据 ScrollableRectangle 的大小是否大于控件的大小,以编程方式启用和禁用 Web 浏览器的滚动条。这在理论上会很好,除非它似乎在任何时候更改 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 浏览器时触发将设计模式设置为 on(它需要它作为 HTML 编辑器工作)。但是,在这种特殊情况下,如果没有更好的解决方案,我可以重新启用默认滚动条。
编辑:要清楚,我不是在谈论 HTML 内容中的任何滚动条——这无关紧要,因为 HTML 只是用于允许灵活地格式化文本。我说的只是浏览器控件本身的滚动条。
非常感谢任何帮助。谢谢!