我想在WinForms应用程序中创建一个简单的3D线,以改进我的表单布局的可视布局。 这行非常像关于Windows对话框中的行(可以在Windows资源管理器 - >帮助 - >关于Windows中打开)。如何在WinForms应用程序中创建一行?
一个例子进行检查here。最后一行(3D)是我想要的,而不是第一行。
如何在C#或Visual Basic(.NET)做些什么呢?
感谢
我想在WinForms应用程序中创建一个简单的3D线,以改进我的表单布局的可视布局。 这行非常像关于Windows对话框中的行(可以在Windows资源管理器 - >帮助 - >关于Windows中打开)。如何在WinForms应用程序中创建一行?
一个例子进行检查here。最后一行(3D)是我想要的,而不是第一行。
如何在C#或Visual Basic(.NET)做些什么呢?
感谢
如果使用SysInternals的ZoomIt实用程序,可以看到这只是两行。白色之上的深灰色。使用Graphics.DrawLine()绘制线条非常简单,您只需确保选择与该窗体的BackColor配合良好的深色。如果用户选择另一个主题,那并不总是灰色的。这使GroupBox技巧下降。
此示例代码是维修:
protected override void OnPaint(PaintEventArgs e) {
Color back = this.BackColor;
Color dark = Color.FromArgb(back.R >> 1, back.G >> 1, back.B >> 1);
int y = button1.Bottom + 20;
using (var pen = new Pen(dark)) {
e.Graphics.DrawLine(pen, 30, y, this.ClientSize.Width - 30, y);
}
e.Graphics.DrawLine(Pens.White, 30, y+1, this.ClientSize.Width - 30, y+1);
}
注意使用此代码按钮1,有以确保在行权高度绘制,即使形式重新调整。选择您自己的控件作为该行的参考。
一种方法是创建一个不带标签和高度0一组框(或者是1,也不太记得了) - 我知道我以前用过的那招,即使感觉有点哈克:-)
我也已经使用了GroupBox hack和它有基于操作系统边境主题造型本身的利益。
也有VB Power Packs控件集合在一个Line类。那里还有其他一些我们也用过的好东西。
编辑:这是我的Seperator类,用于使用上述方法绘制水平线。
public class Separator : GroupBox
{
// Methods
protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified)
{
base.SetBoundsCore(x, y, width, 3, specified);
}
// Properties
[DefaultValue("")]
public override string Text
{
get
{
return string.Empty;
}
set
{
}
}
}
您可以通过添加标签并设置其文字下划线得到一个行分隔符效应“_”
嗨@Tor,我试过一次,但如果用户在Windows中使用皮肤,这可以使线看起来很奇怪! 我正在寻找和替代这种技术。 – RHaguiuda 2010-06-21 18:26:04