【发布时间】:2013-01-25 10:55:56
【问题描述】:
我有一个表单,其 FormBorderStyle 属性设置为“无”,顶部有一个自定义栏,用于拖动和按钮。
现在我想给表单一个边框,因为它是一个子表单,并且父表单与子表单具有相同的背景颜色,因此很难看到子表单。 不,我不能/不会改变背景颜色。
帮助
【问题讨论】:
-
表格的宽高是固定的吗?
标签: vb.net border formborderstyle
我有一个表单,其 FormBorderStyle 属性设置为“无”,顶部有一个自定义栏,用于拖动和按钮。
现在我想给表单一个边框,因为它是一个子表单,并且父表单与子表单具有相同的背景颜色,因此很难看到子表单。 不,我不能/不会改变背景颜色。
帮助
【问题讨论】:
标签: vb.net border formborderstyle
有一种方法无需设置背景图像和/或固定大小的表单。所以这是我猜的最合适和最简单的方法。假设您有一个名为Form1 的表单,您需要做的就是:
Private Sub Form1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle, Color.Black, ButtonBorderStyle.Solid)
End Sub
如果您想使用 Windows 版本提供的默认边框,另一种选择:
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Sizable
Me.Text = ""
Me.ControlBox = False
End Sub
【讨论】:
您可以使用 Visual Basic .NET Power Packs,您可以下载 here。它有一个名为LineShape 的控件,您可以将它放在无边框表单的边缘,就像我目前正在开发的这个程序一样。
北边界只是一个LineShape,BorderWidth 设置为60,其他边界的BorderWidths 设置为10。
【讨论】:
也许您可以使用BackgroundImage 透明,但在边框除外。
【讨论】:
您可以在表单绘制事件中使用它:
ControlPaint.DrawBorder(e.Graphics, Me.ClientRectangle, Color.Black, ButtonBorderStyle.Solid)
这将仅绘制客户端边框,如果您正在调整表单大小或最大化表单,请在表单调整大小事件上使用Me.Refresh(),以便表单重绘其边框。
【讨论】:
看到GD的回答后,我对表格上的TableLayouPanel做了同样的事情:
Private Sub TableLayoutPanel1_Paint(sender As Object, e As PaintEventArgs) Handles TableLayoutPanel1.Paint
ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle, Color.DarkOrange, ButtonBorderStyle.Solid)
End Sub
【讨论】: