实施例: 有谁知道如何创建这些对话框规则行?它们可以在设计时使用通用控件创建还是自定义控件?
我想在我的表单上拖一个并定位它,但我找不到控件(如果确实存在)。
任何人都有创建这些的经验吗?
(我正在使用Visual Studio .NET 2010; C#)
答案 0 :(得分:2)
好的家伙,感谢上面三个答案中收集的信息(Hans Passant,Reddog和itowlson),我已经将一个有效的解决方案整合在一起。我在下面为未来的询问者提供了完整的详细信息。
基本上,它是一个子类化的GroupBox控件,其中只绘制了顶部边框(使用ControlPaint.DrawBorder3D),默认情况下,GroupBox.Text属性设置为emtpy。
创建一个类文件(例如,Seperator.cs),将其添加到项目中并将以下内容粘贴到其中:
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace your_namespace
{
public class Separator : GroupBox
{
[DefaultValue("")]
public override String Text
{
get {return String.Empty;}
}
protected override void OnPaint(PaintEventArgs e)
{
ControlPaint.DrawBorder3D(
e.Graphics,
this.ClientRectangle,
Border3DStyle.Etched,
Border3DSide.Top
);
}
}
}
编译您的项目。编译项目后,“Seperator”组件将显示在Visual Studio设计器中“工具箱”的“your_namespace组件”部分中。然后,您只需将“Seperator”组件拖到您的表单上,将其定位并塑造成您喜欢的颜色。
再次感谢所有花时间回复的人,我希望这有助于将来寻找解决此问题的任何人。
答案 1 :(得分:1)
使用ControlPaint.DrawBorder3D方法:
private void Form1_Paint(object sender, PaintEventArgs e)
{
ControlPaint.DrawBorder3D(
e.Graphics,
new Rectangle(10, 10, 300, 10),
Border3DStyle.Etched,
Border3DSide.Top);
}
注意使用Border3DSide.Top。如果您使用“具有最小高度的组合框”技巧,这可以避免您在右端获得的视觉故障。
答案 2 :(得分:0)
根据Hans' answer,GroupBox通常就足够了,并且可以很好地与操作系统相关。
我们在控制库中保留以下内容:
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
{
}
}
}