繁体   English   中英

从 WebBrowser 控件中删除边框

[英]Removing border from WebBrowser control

我有一个 WebBrowser 控件坐在一个 Form 上,它周围有一个令人讨厌的 2px 内嵌边框。 这导致我的内容在右侧和底部被 4 px 剪裁,我不知道如何摆脱它。 控件本身没有任何 BorderStyle 属性——如何删除边框?

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

让它停下来!http://img229.imageshack.us/img229/8342/badbadwebbrowser.gif

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

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

值得庆幸的是,这将在 IE9 中消失

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 控件中删除任何边框。

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

<html style="border:none;">

首先,我尝试将它添加到body元素中,但没有成功,但它适用于根html元素。

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

我无法重现您所说的外观。 我在 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。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM