无边框Winform,边框为1px

001*_*010 7 c# user-interface visual-studio-2010 visual-studio winforms

这可能听起来像一个奇怪的问题,但我有C#Winform我将FormBorderStyle设置为None.到目前为止一切都很好,但我想知道是否有一种方法可以在我的表单周围添加1px边框?我知道我可以通过创建自己的图像来实现它,但我想知道是否有更自然的方式来做它.谢谢

Rot*_*tem 10

我考虑使用一个图像,或者使用GDI +创建不必要的控件来轻松绘制,这会浪费资源.

我认为最简单的解决方案是覆盖OnPaint表单的方法并自己绘制边框:

protected override void OnPaint(PaintEventArgs e)
{
    e.Graphics.DrawRectangle(Pens.Black, this.Bounds);
}
Run Code Online (Sandbox Code Playgroud)

当然,您也可以使用Pen自己的颜色和宽度.

  • 我发现`e.Graphics.DrawRectangle`有点命中并且使用了`ControlPaint.DrawBorder(e.Graphics,ClientRectangle,Color.Black,ButtonBorderStyle.Solid);`工作得很好,无需重新定位. (13认同)

ant*_*mea 5

在表单中使用填充 1;1;1;1 并为表单设置背景颜色,然后在表单中放置一个面板。将面板设置为白色或其他正常背景颜色。并在父控制器中设置停靠点。表单的背景颜色将充当边框。