Windows Forms分隔符控件

10
4个回答

20

如果我没记错的话,那只是一个线控件,但我认为这个控件已经不存在了。这里提供了一种解决方法。

label1.AutoSize = False
label1.Height = 2
label1.BorderStyle = BorderStyle.Fixed3D

10

虽然这个问题已经有了答案,但我发现以下内容部分地基于 smoore 的回答解决了我的需求。

创建一个新的控件。将代码编辑为以下内容:

public partial class Line : Label
{
    public override bool AutoSize
    {
        get
        {
            return false;
        }
    }

    public override Size MaximumSize
    {
        get
        {
            return new Size(int.MaxValue, 2);
        }
    }

    public override Size MinimumSize
    {
        get
        {
            return new Size(1, 2);
        }
    }

    public override string Text
    {
        get
        {
            return "";
        }
    }

    public Line()
    {
        InitializeComponent();
        this.AutoSize = false;
        this.Height = 2;
        this.BorderStyle = BorderStyle.Fixed3D;
    }
}

用控件的类名替换Line。 这将放置一个分隔符,允许您在设计器中调整大小并禁用添加文本,更改自动调整大小会强制大小的高度为2,宽度为任何您想要的值,并禁用添加文本。


5

实际上,它并没有包含在标准控件集中(我很确定它曾经在那个年代里存在过!),但您可以轻松创建自己的控件或通过使用无文本和高度为1px的GroupBox来欺骗系统。

使用UserControl提供相同功能的方法:(非本人编写,来源:http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/0d4b986e-3ed0-4933-a15d-4b42e02005a7/

public partial class LineSeparator:UserControl
{

    public LineSeparator()
    {
        InitializeComponent();
        this.Paint += new PaintEventHandler(LineSeparator_Paint);
        this.MaximumSize = new Size(2000, 2);
        this.MinimumSize = new Size(0, 2);
        this.Width = 350;
    }

    private void LineSeparator_Paint(object sender, PaintEventArgs e)
    {
        Graphics g = e.Graphics;
        g.DrawLine(Pens.DarkGray, new Point(0, 0), new Point(this.Width, 0));
        g.DrawLine(Pens.White, new Point(0, 1), new Point(this.Width, 1));
    }
}

1
让你想知道为什么限制只有2000,这甚至不足以覆盖两个屏幕的设置。这让我想起了所罗门糟糕的编程。 - Blindy

0
我为此编写了一个自定义控件。它支持垂直和水平模式。只需安装我的[小型]控件套件,将分隔符控件拖到表单上并将其放置在任何您想要的位置即可。
Install-Package ALMSTWKND -Version 1.0.0

在安装后,这些控件将出现在工具箱窗格中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接