Удаление границы из элемента управления WebBrowser - PullRequest
6 голосов
/ 24 января 2010

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

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

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

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

Ответы [ 4 ]

4 голосов
/ 24 января 2010

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

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

3 голосов
/ 10 октября 2010

Я решил ту же проблему, добавив атрибут стиля border:none; в элемент html .

<html style="border:none;">

Сначала я попытался добавить его в элемент body , но он не работал, но работает с корневым html элементом.

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

2 голосов
/ 24 января 2010

Элемент управления WebBrowser наследует стиль отображения от класса элемента управления. Если вы хотите контролировать стиль границы, вы можете использовать такой код, например, в Form.Designer.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.
0 голосов
/ 24 января 2010

Я не могу воспроизвести вид, о котором вы говорите. Мой код в Form1.Designer.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 = ....

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

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

...