代码之家  ›  专栏  ›  技术社区  ›  Zack The Human Kunal

从WebBrowser控件中删除边框

  •  6
  • Zack The Human Kunal  · 技术社区  · 16 年前

    我有一个Webbrowser控件放在一个表单上,表单周围有一个令人恼火的2倍插入式边框。它导致我的内容被4像素的右下角剪切,我不知道如何去掉它。控件本身没有任何borderStyle属性——如何删除边框?

    请参见屏幕截图中的红色区域:

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

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

    4 回复  |  直到 14 年前
        1
  •  4
  •   i_am_jorf    15 年前

    IE将其作为body标记上默认样式的一部分绘制。集合 border:0px 在body元素上,它就消失了。

    谢天谢地,这是 going away in IE9 .

        2
  •  3
  •   Emre Guldogan    15 年前

    我通过添加 border:none; 样式属性到 HTML 元素。

    <html style="border:none;">
    

    首先,我尝试将它添加到 身体 元素,但它不起作用,但它在根上起作用 HTML 元素。

    WindowsXP上用于WebBrowser对象的IE版本-我认为版本6-默认情况下将根HTML元素解释为具有边框。如果您可以直接控制WebBrowser中显示的网页,那么您可以直接向网页的HTML源代码添加一个样式属性-就像我所做的那样-如果没有,那么应该有一种方法可以在应用程序的一侧以编程方式编辑WebBrowser中的HTML。

        3
  •  2
  •   AlexLocust    16 年前

    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()
            {
            }
        }
    

    现在您可以在表单类中更改生成的代码。

    private wbExt webBrowser1;

    在表单的初始化组件中重写WebBrowser项的创建,如下所示:

    this.webBrowser1 = new WindowsFormsApplication1.wbExt();
    所以,现在
    webBrowser1.BorderStyle = BorderStyle.None;
    将从WebBrowser控件中删除任何边框。
        4
  •  -1
  •   lmsasu    16 年前

    我不能复制你所说的样子。我在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。

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

    推荐文章