如何在.NET WebBrowser控件中仅在需要时显示垂直滚动条?

4

与 RichTextBox 控件具有枚举 ScrollBars 属性不同,WebBrowser 控件只有一个布尔属性 "ScrollBarsEnabled"。

将其设置为 ScrollBarsEnabled = True,则垂直滚动条始终显示(即使不需要)。水平滚动条的行为符合预期,只在需要时出现。

将 ScrollBarsEnabled = False; 设置为后,两个滚动条都不会出现。

示例代码:

 public Form1()
    {
        InitializeComponent();

        WebBrowser webBrowser1 = new WebBrowser();

        webBrowser1.Size = new Size(this.Width - 50, this.Height - 50);
        webBrowser1.Location = new Point(25, 10);
        webBrowser1.AllowWebBrowserDrop = false;
        webBrowser1.ScrollBarsEnabled = true;

        string preText = "<html><head></head><body><div>";
        string bodyText = "Hello World";
        string postText = "</body></div></html>";
        webBrowser1.DocumentText = preText + bodyText + postText;


        this.Controls.Add(webBrowser1);
    }

代码范例的输出,注意垂直滚动条

尝试过的其他方法:

  • 尝试在 .Net 4.0 和 .Net 2.0 中运行。
  • 尝试在安装了 IE6 和 IE8 的计算机上运行。
  • 尝试加载外部页面(使用 .Navigate("someurl") 而不是设置 DocumentText)。

无法重现。请考虑更新您的IE版本。 - Hans Passant
@Hans Passant,无论机器上安装IE6还是IE8,效果都相同。尝试了.NET 2.0和4.0。还尝试了使用.Navigate("someurl")而不是生成自己的HTML。 - blak3r
1个回答

7
滚动条可以通过CSS在大多数浏览器中进行控制,但只有在您控制内容时才有用。
html, body
{
    overflow: auto;
}

当然,WebBrowser控件是否遵守这一点还有待观察。
请参见http://www.w3schools.com/cssref/pr_pos_overflow.asp

1
成功了!我肯定是以Windows Forms的方式思考这个问题,而不是以Web的方式。我绝对猜不到这一点!谢谢! - blak3r
刚刚也从C++ MFC路线做了同样的事情!谢谢Will。 - Jon Eldridge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接