【问题标题】:Howto add a custom border to a FormBorderStyle=None - form?如何将自定义边框添加到 FormBorderStyle=None - 表单?
【发布时间】:2013-01-25 10:55:56
【问题描述】:

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

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

帮助

【问题讨论】:

  • 表格的宽高是固定的吗?

标签: vb.net border formborderstyle


【解决方案1】:

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

【讨论】:

  • 我尝试了你的第一种方法,但是加载表单时没有触发paint事件。
  • Nvm,如果表单上有面板,则不绘制。
  • 第一种方法可以得到一个非常漂亮的清晰边框,单像素宽度。我在 WinForms C#/.NET 4.5.2 中使用了这种方法,发现表单绘制处理程序会为表单上的每个子元素调用。所以我在 ControlPaint.DrawBorder 之前添加了“if (e.ClipRectangle.X == 0)”,以确保只有表单收到边框。
【解决方案2】:

您可以使用 Visual Basic .NET Power Packs,您可以下载 here。它有一个名为LineShape 的控件,您可以将它放在无边框表单的边缘,就像我目前正在开发的这个程序一样。

北边界只是一个LineShapeBorderWidth 设置为60,其他边界的BorderWidths 设置为10

【讨论】:

    【解决方案3】:

    也许您可以使用BackgroundImage 透明,但在边框除外。

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        【解决方案5】:

        看到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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多