尝试更改标签的边框颜色

26

我正在使用VB、VS2008和winforms开发。我需要创建一些标签,并使用BorderStyle = FixedSingle属性。

是否有办法改变这个边框的颜色?它默认始终为黑色。

3个回答

36

如果你不想创建一个自定义控件,你可以尝试这个方法:

连接到标签的绘制事件。

void label1_Paint(object sender, PaintEventArgs e)
{
    ControlPaint.DrawBorder(e.Graphics, label1.DisplayRectangle, Color.Blue, ButtonBorderStyle.Solid);
}

翻译自此处,由Andrej Tozon提供。


13

我将robin.ellis和orandov的解决方案结合起来,得到了最适合我的结果。我创建了一个自定义控件,继承了Label对象,然后重写了OnPaint事件。

Public Class nomLabel
   Inherits Label

  Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
      MyBase.OnPaint(e)

      ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle, myColor, ButtonBorderStyle.Solid)
   End Sub

End Class

感谢您的帮助!


如何使用?myLabel.BorderStyle = nomLabel - AdorableVB
@AdorableVB,nomLabel是自定义控件,而不是边框样式。您可以使用nomLabel代替标准的Label控件。 - Stewbob
好的,我明白了。昨天我创建了我的按钮,但是边框是固定的。我希望当鼠标悬停时使用 ButtonBorderStyle.Solid,当鼠标离开时使用 .None。代码不起作用,如果我使用自定义控件,它也不适用于代码。 - AdorableVB

8
我也遇到了这个问题,最终采用了一个变通方法。
创建一个自定义控件,其中包含一个标签,该标签被包装在一个面板中。
然后您可以使用面板来创建边框,并将其颜色更改为所需颜色。
我发现,无论如何将应用程序中的所有控件都包装起来是一个好主意(尽管有点费时间),因为当您需要一个自定义属性或更改所有此类型的控件时,只需更改基本控件即可使整个应用程序更改。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接