Как отобразить вертикальную полосу прокрутки в элементе управления .NET WebBrowser, только когда это необходимо? - PullRequest
4 голосов
/ 22 октября 2011

В отличие от, например, элемента управления RichTextBox, который имеет свойство enum ScrollBars, элемент управления WebBrowser просто имеет логическое свойство "ScrollBarsEnabled".

Установка ScrollBarsEnabled = True, вертикальная полоса прокрутки отображается все время (даже если она не нужна). Горизонтальная полоса прокрутки ведет себя так, как можно было ожидать, и появляется только тогда, когда это необходимо.

Setting 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);
    }

Output of code sample, notice the vertical scrollbar

Другие попытки:

  • Пробовал в .Net 4.0, & .Net 2.0.
  • Пробовал с компьютерами с IE6 и IE8
  • Попытка загрузки внешней страницы (с использованием .Navigate ("someurl") вместо установки DocumentText.

1 Ответ

6 голосов
/ 22 октября 2011

Полосами прокрутки можно управлять в большинстве браузеров с помощью CSS, хотя это полезно, только если у вас есть контроль над содержимым:

html, body
{
    overflow: auto;
}

Конечно, признает ли элемент управления WebBrowser это еще предстоит увидеть.

См. http://www.w3schools.com/cssref/pr_pos_overflow.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...