.net 对话框中的规则行

.net 对话框中的规则行,.net,dialog,.net,Dialog,例如: 有人知道这些对话框规则行是如何创建的吗?它们可以在设计时使用公共控件创建,还是自定义控件 我只想在窗体上拖动一个并定位它,但我找不到该控件(如果它确实存在) 有没有人有过创作这些作品的经验 (我使用的是Visual Studio.NET 2010;C#)根据,一个GroupBox通常就足够了,并且可以很好地用操作系统来设置主题 我们在控制库中保留以下内容: public class Separator : GroupBox { // Methods protected o

例如: 有人知道这些对话框规则行是如何创建的吗?它们可以在设计时使用公共控件创建,还是自定义控件

我只想在窗体上拖动一个并定位它,但我找不到该控件(如果它确实存在)

有没有人有过创作这些作品的经验

(我使用的是Visual Studio.NET 2010;C#)

根据,一个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
        {
        }
    }
}

使用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的使用。这避免了使用“高度最小的分组框”技巧时在右端出现的视觉故障。

好了,伙计们,多亏了从以上三个答案(Hans Passant、Reddog和itowlson)收集到的信息,我已经拼凑出了一个可行的解决方案。我在下面提供全部细节,以供将来查询

基本上,它是一个子类GroupBox控件,其中仅绘制上边框(使用ControlPaint.DrawBorder3D),默认情况下,GroupBox.Text属性设置为emtpy

创建一个类文件(例如separator.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
             );
        }
    }
}
编译你的项目。编译项目后,VisualStudio设计器工具箱的“your_namespace Components”部分将显示一个“separator”组件。然后,您可以将“分隔器”组件拖到窗体上,根据自己的喜好对其进行定位和造型


再次感谢每一位花时间回复的人,我希望这能帮助将来希望解决这个问题的人

谢谢你的密码。我试过了,但是在最右边的边缘有一个伪影:有没有办法在右边裁剪几个像素,这样它就不会显示出来?请参阅我的答案,以获得完整的插入式解决方案。没有瑕疵,没有
ControlPaint
,没有混乱。