从WebBrowser控件中删除边框

时间:2010-01-24 18:50:06

标签: c# .net webbrowser-control

我有一个WebBrowser控件坐在一个Form上,它周围有一个恼人的2px嵌入式边框。它导致我的内容被右侧和底部的4像素剪辑,我无法弄清楚如何摆脱它。控件本身没有任何BorderStyle属性 - 如何删除边框?

查看截屏中的红色区域:

Make it stop! http://img229.imageshack.us/img229/8342/badbadwebbrowser.gif

我希望WebBrowser看起来像蓝色区域 - 也就是说,填充Form并与Form的边缘齐平。

4 个答案:

答案 0 :(得分:4)

IE将其绘制为body标签上默认样式的一部分。在body元素上设置border:0px,它就会消失。

谢天谢地,这是going away in IE9

答案 1 :(得分:3)

我通过在 html 元素中添加border:none;样式属性解决了同样的问题。

<html style="border:none;">

首先我尝试将其添加到 body 元素中,但它不起作用,但它适用于root html 元素。

Windows XP上用于WebBrowser对象的IE版本 - 我认为版本6 - 默认将根html元素解释为具有边框。如果您可以直接控制WebBrowser中显示的Web页面,您可以直接将样式属性添加到页面的HTML源代码中 - 就像我一样 - 如果没有,应该有一种方法可以编程方式编辑WebBrowser中的HTML在你的申请方面。

答案 2 :(得分:2)

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;

并在表单的InitializeComponent中重写webBrowser项的创建,如下所示:

this.webBrowser1 = new WindowsFormsApplication1.wbExt();
因此,现在
webBrowser1.BorderStyle = BorderStyle.None;
将从webBrowser控件中删除任何边框。

答案 3 :(得分:-1)

我无法再现你所讲述的外表。我在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 = ....

并且webcontrol显示没有边框...我正在使用VS 2008 SP1 / Windows 7。

也许您应该尝试在容器中添加控件,例如小组。