答案 0 :(得分:14)
Gumpy评论,不准确。在项目中添加一个新类并粘贴下面显示的代码。编译。将新控件从工具栏顶部拖放到表单上。
using System;
using System.Windows.Forms;
class MyWebBrowser : WebBrowser {
protected override CreateParams CreateParams {
get {
var parms = base.CreateParams;
parms.Style |= 0x800000; // Turn on WS_BORDER
return parms;
}
}
}
其他边框样式也可以使用,请查看SDK中的WinUser.h。
答案 1 :(得分:8)
您可以将WebBrowser控件包装在Panel中并设置Panel.BorderStyle属性。
Panel panel1 = new Panel();
panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
panel1.Controls.Add(webbrowser1);
答案 2 :(得分:1)
首先要注意,如果指定
,IE 6会单独绘制边框<!DOCTYPE html>或
body {border-style:inset;边框宽度:2px的;保证金:0像素; }
但是对于较新的IE版本,这不再适用。
因此,如果您在C#中绘制边框并指定DOCTYPE,则必须设置
html,body {border:0; }
否则你在IE 6中有两个边框。
Hans(设置WS_BORDER)的解决方案会产生丑陋的黑色边框。
如果你想要一个凹陷的3D边框,最简单的解决方案就是:
protected override CreateParams CreateParams
{
get
{
CreateParams i_Parms = base.CreateParams;
i_Parms.ExStyle |= 0x200; // WS_EX_CLIENTEDGE
return i_Parms;
}
}
问题是在Windows 2000之前使用了凹陷的3D边框。但是随着XP的变化,UXTHEME.DLL绘制了所有控件而不是旧的USER32.DLL。 User.h中的所有控件绘制标志都用于Windows 2000,并且自XP以来不再生成与主题兼容的绘图。
那么如何获得看起来像ListBox,ListView,TreeView等的XP / Windows 7主题边框(一条细蓝线或绿线)的边框,并在更改主题时更改颜色?
一个简单的解决方案是在VS中的表单设计器中插入一个ListBox,在您希望浏览器出现的位置,然后在您的表单中写入:
protected override void OnLoad(EventArgs e)
{
....
listBox.IntegralHeight = false;
webBrowser.Parent = listBox;
webBrowser.Dock = DockStyle.Fill;
}
这使浏览器成为列表框的子项。列表框绘制其边框,内部的浏览器绘制Html内容。
这种方式非常完美,与其他主题控件的外观相同,但有一点不利之处在于,调整窗体的大小会更加闪烁,因为现在还有一个控件需要绘制。
完美的解决方案是将DrawThemeBackground或DrawThemeEdge手动绘制边框或通过GetThemeColor获取边框颜色并使用System.Drawing.Graphics.DrawRectangle()绘制边框但是这非常笨拙所以我没有试试吧。 (另外,如果用户关闭了主题,则必须实现后备)