簡體   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