如何将自定义边框添加到FormBorderStyle = None - 表单?

时间:2013-01-25 10:55:56

标签: vb.net border formborderstyle

我有一个表单,其中属性FormBorderStyle设置为'None',顶部有一个自定义栏,用于拖动和按钮。

现在我想给表单一个边框,因为它是一个子表单,父表单与子表单具有相同的背景颜色,因此很难看到子表单。 不,我不能/不会改变背景颜色。

帮助

5 个答案:

答案 0 :(得分:3)

有一种方法无需设置背景图像和/或固定大小的表单。所以这是我猜的最恰当和简单的方法。假设您有一个名为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

答案 1 :(得分:1)

您可以使用 Visual Basic .NET Power Pack ,您可以下载here。它有一个名为LineShape的控件,可以放在无边框表格的边缘,就像我目前正在处理的这个程序一样。 Notice that the borders of the form are just LineShape.

北边界只是LineShapeBorderWidth设置为60,其他边框'BorderWidth设置为10

答案 2 :(得分:0)

除了边框外,你可以使用BackgroundImage透明。

答案 3 :(得分:0)

您可以在表单绘制事件中使用它:

ControlPaint.DrawBorder(e.Graphics, Me.ClientRectangle, Color.Black, ButtonBorderStyle.Solid)

这将仅绘制客户端边框,如果要调整表单大小,或者最大化表单,请在表单调整大小事件上使用Me.Refresh(),以便表单重绘其边框。

答案 4 :(得分:0)

在看到PDF的答案后,我对表格上的TableLayouPanel做了同样的事情:

/mnt/c/