Удаление границы из управления WebBrowser

У меня есть элемент управления WebBrowser, сидящий на форме, которая имеет раздражающую вставку 2px вокруг нее. Это заставляет мой контент быть обрезанным 4 px справа и снизу, и я не могу понять, как избавиться от него. Сам элемент управления не имеет свойств BorderStyle - как удалить границу?

см. красную область на снимке экрана:

остановите это! http://img229.imageshack.us/img229/8342/badbadwebbrowser.gif

Я хочу, чтобы WebBrowser выглядел как синяя область - то есть, чтобы заполнить форму и быть заподлицо с краями формы.

4 ответов


IE рисует это как часть стиля по умолчанию в теге body. Set border:0px на элементе тела, и он уходит.

к счастью, это уходит в IE9.


Я решил ту же проблему, добавив в стиле HTML-код элемент.

<html style="border:none;">

сначала я попытался добавить его в тело элемент, но он не работал, но он работает на root HTML-код элемент.

версия IE, используемая в Windows XP для объекта WebBrowser - я думаю, что версия 6-интерпретирует корневой элемент html как имеющий границу по умолчанию. Если у вас есть прямой контроль над веб-страница отображается в WebBrowser, вы можете добавить атрибут стиля непосредственно к HTML-источнику страницы - как и я, если нет, должен быть способ редактировать HTML внутри WebBrowser программно на стороне вашего приложения.


элемент управления WebBrowser наследует стиль отображения из класса control. Если вы хотите контролировать пограничный стиль управления, вы можете использовать такой код, например, в форме.Дизайнер.cs:


    using System;
    using System.ComponentModel;
    using System.Windows.Forms;

    public class wbExt : System.Windows.Forms.WebBrowser
    {
        private BorderStyle _borderStyle;
        [
        Category("Appearance"),
        Description("The border style")
        ]

        public BorderStyle BorderStyle
        {
            get
            {
                return _borderStyle;
            }
            set
            {
                _borderStyle = value;
                this.RecreateHandle();
                Invalidate();
            }
        }

        protected override CreateParams CreateParams
        {
            get
            {
                const int WS_BORDER = 0x00800000;
                const int WS_EX_STATICEDGE = 0x00020000;
                CreateParams cp = base.CreateParams;
                switch (_borderStyle)
                {
                    case BorderStyle.FixedSingle:
                        cp.Style |= WS_BORDER;
                        break;
                    case BorderStyle.Fixed3D:
                        cp.ExStyle |= WS_EX_STATICEDGE;
                        break;
                }
                return cp;
            }
        }

        public wbExt()
        {
        }
    }

Теперь вы можете изменить сгенерированный код в классе Form.

private wbExt webBrowser1;

и перепишите создание элемента webBrowser в InitializeComponent формы, например:

this.webBrowser1 = new WindowsFormsApplication1.wbExt();
Итак, теперь
webBrowser1.BorderStyle = BorderStyle.None;
удалит любые границы из управления webBrowser.

Я не могу воспроизвести внешний вид, о котором вы говорите. Мой код в форме Form1.Дизайнер.CS-это:

    this.webBrowser1.Location = new System.Drawing.Point(0, 0);
    this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20);
    this.webBrowser1.Name = "webBrowser1";
    this.webBrowser1.ScrollBarsEnabled = false;
    this.webBrowser1.Size = new System.Drawing.Size(141, 125);
    this.webBrowser1.TabIndex = 0;
    this.webBrowser1.Uri = ....

и webcontrol отображается без границы... Я использую VS 2008 SP1 / Windows 7.

Возможно, вам следует попытаться добавить элемент управления внутри контейнера, например панель.