【问题标题】:VB.Net - Change the Panel's Border color [closed]VB.Net - 更改面板的边框颜色
【发布时间】:2020-12-28 18:55:54
【问题描述】:

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

【问题讨论】:

  • 您不会更改边框颜色。如果您将BorderStyle 设置为FixedSingle,那么您将接受您所得到的。另一种方法是使用 GDI+ 自己绘制边框,可能在 Paint 事件处理程序或自定义控件的 OnPaint 方法中调用 Graphics.DrawRectangle。我们不只是在 SO 为您提供代码。您可以进行研究并尝试,然后在遇到特定问题时发布问题。您不知道如何是找出方法的理由,而不是放弃并期望我们告诉您如何。如果您尝试失败,那么我们可以再次交谈。

标签: vb.net colors border panel


【解决方案1】:

正如您已经提到的,c# version of this question 有多个答案。

以下是答案的简短摘要:

可能性1

最简单无代码的方式如下:

  • Panel1BackColor 设置为所需的边框颜色
  • Panel1Padding 设置为所需的边框厚度(例如2;2;2;2
  • Panel1 内创建一个Panel2 并将Dock 属性设置为Fill
  • BackColorof Panel2 设置为所需的背景颜色

警告:不能使用透明背景。

可能性2

Paint 事件处理程序内绘制一个边框。
(从this answer翻译成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

可能性 3

创建自己的Panel-class 并在客户区绘制边框。
(从this answer翻译成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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    相关资源
    最近更新 更多