[英]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.