如何在WinForms应用程序中创建行?

如何在WinForms应用程序中创建行?,winforms,graphics,Winforms,Graphics,我想在WinForms应用程序中创建一条简单的3D线条,以改进表单布局的视觉布局。 此行与“关于Windows”对话框中的行非常相似(可以在Windows资源管理器->帮助->关于Windows中打开) 可以检查一个示例。最后一行(3D)是我想要的,不是第一行 如何在C#或Visual Basic(.NET)中实现这一点?一种方法是创建一个没有标签且高度为0的组框(或者是1,我不太记得)-我知道我以前使用过这个技巧,即使它感觉有点粗糙:-)我也使用过,并且它还具有基于操作系统边框主题进行样式设计

我想在WinForms应用程序中创建一条简单的3D线条,以改进表单布局的视觉布局。 此行与“关于Windows”对话框中的行非常相似(可以在Windows资源管理器->帮助->关于Windows中打开)

可以检查一个示例。最后一行(3D)是我想要的,不是第一行


如何在C#或Visual Basic(.NET)中实现这一点?

一种方法是创建一个没有标签且高度为0的组框(或者是1,我不太记得)-我知道我以前使用过这个技巧,即使它感觉有点粗糙:-)

我也使用过,并且它还具有基于操作系统边框主题进行样式设计的优点

控件集合中还有一个Line类。还有一些其他的好东西我们也用过

编辑:这是我的分隔器类,用于使用上述方法绘制水平线

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

如果您使用SysInternals的ZoomIt实用程序,您可以看到这只是两行代码。一个深灰色的在白色的上面。使用Graphics.DrawLine()绘制线条非常简单,您只需确保选择一种与表单背景色配合良好的深色即可。如果用户选择了另一个主题,这并不总是战舰灰色。这使得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,以确保线绘制在正确的高度,即使表单被重新缩放。选择您自己的控件作为线的参考。

添加一个带有3D边框且没有文本的标签控件,然后将高度设置为2

您可以通过添加标签并将其文本设置为下划线来获得行分隔符效果“\br/>

Hi@Tor,我曾经尝试过,但是如果用户在Windows中使用皮肤,这会使行看起来非常奇怪!!!我正在寻找这种技术的替代品。