VB.Net - 更改面板的边框颜色

BHA*_*als -1 vb.net border colors panel

我在堆栈溢出中搜索了类似“如何更改面板边框颜色 vb.net”的内容,但没有找到任何结果,所以我删除了 vb.net 并像这样输入,我找到了结果,但它仅适用于 C#,我不这样做C# 好多了,也许我认为我可以翻译,但我只是认为翻译不会100% 准确,所以,这就是我提出这个问题的原因。请帮助我如何更改VB.Net中面板的边框颜色我已在属性中设置了 BorderStyle FixSingle,但仍然无法更改面板的边框颜色。请帮助并告诉我如何更改面板的边框颜色,否则我们无法从属性中做到这一点,我们可以通过编码来做到这一点,那么至少请给我代码。

Mat*_*now 5

正如您已经提到的,这个问题有一个C# 版本,有多个答案。

以下是答案的简短摘要:

可能性1

最简单且无代码的方法如下:

  • BackColor将的设置Panel1为所需的边框颜色
  • Padding将的设置Panel1为所需的边框厚度(例如2;2;2;2
  • 创建一个Panel2insidePanel1并将Dock-property 设置为Fill
  • BackColor的设为Panel2所需的背景颜色

注意:不能使用透明背景。

可能性2

在事件处理程序内绘制一个边框Paint(从这个答案
翻译成VB.NET 。)

Private Sub Panel1_Paint(sender As Object, e As PaintEventArgs) Handles Panel1.Paint
    ControlPaint.DrawBorder(e.Graphics, Panel1.ClientRectangle, Color.DarkBlue, ButtonBorderStyle.Solid)
End Sub
Run Code Online (Sandbox Code Playgroud)

可能性3

创建您自己的Panel类并在客户区绘制边框。 (从这个答案
翻译成VB.NET 。)

<System.ComponentModel.DesignerCategory("Code")>
Public Class MyPanel
    Inherits Panel

    Public Sub New()
        SetStyle(ControlStyles.UserPaint Or ControlStyles.ResizeRedraw Or ControlStyles.DoubleBuffer Or ControlStyles.AllPaintingInWmPaint, True)
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
        Using brush As SolidBrush = New SolidBrush(BackColor)
            e.Graphics.FillRectangle(brush, ClientRectangle)
        End Using

        e.Graphics.DrawRectangle(Pens.Yellow, 0, 0, ClientSize.Width - 1, ClientSize.Height - 1)
    End Sub
End Class
Run Code Online (Sandbox Code Playgroud)