对话框中的规则行

时间:2011-02-11 23:57:06

标签: .net dialog

实施例: Visual example from visual studio options 有谁知道如何创建这些对话框规则行?它们可以在设计时使用通用控件创建还是自定义控件?

我想在我的表单上拖一个并定位它,但我找不到控件(如果确实存在)。

任何人都有创建这些的经验吗?

(我正在使用Visual Studio .NET 2010; C#)

3 个答案:

答案 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
        {
        }
    }
}