3

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

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

帮助

4

5 回答 5

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
于 2013-01-25T12:51:28.023 回答
1

您可以使用可以在此处下载的Visual Basic .NET Power Packs。它有这个控件,你可以把它放在你的无边框表单的边缘,就像我目前正在开发的这个程序一样。LineShape请注意,窗体的边框只是 LineShape。

北边界只是 aLineShape设置BorderWidth60,其他边界BorderWidth设置为10

于 2016-09-11T04:53:41.277 回答
0

BackgroundImage也许您可以在边框中使用透明的。

于 2013-01-25T10:59:11.667 回答
0

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

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

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

于 2016-01-06T13:22:59.193 回答
0

在看到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
于 2016-10-19T15:17:24.427 回答