Visual Basic.NET 7.x (2002/03)Visual Studio .NET 2002Windows VistaVisual Studio .NET 2003Visual Studio 2005Windows XP.NET 2.0中级开发Visual StudioWindows.NETVisual Basic
创建丰富的标签
扩展 Windows.Forms.Label 控件。
引言
我一直在寻找一个可以用于不同类型的标题和说明的控件。在创建了几个单独的控件之后,我决定只创建一个控件:一个可以配置为具有不同颜色、不同边框并在鼠标操作时做出响应的控件。
结构
开始做这件事的最好方法是寻找一个好的基础。我决定从现有的 Windows.Forms.Label
继承,而不是从头开始创建一个控件。通过这样做,我不需要编写任何代码来绘制文本;基本控件会为我处理这个问题。
属性
除了 Label
控件的现有属性之外,我创建了以下属性
BackColor1
:这不是一个新的属性。它是从我继承的Label
控件的现有BackColor
属性。我将其重命名为BackColor1
,因为之后会有第二个BackColor
。BackColor2
:通过使用两种颜色,我可以绘制出漂亮的渐变颜色。BackColorHover1
:当鼠标进入控件时,您可以选择哪个颜色将用于第一个渐变颜色。如果您不想进行任何操作,请使用与BackColor1
属性相同的颜色。BackcolorHover2
:与上面的相同。BorderLeft
,BorderTop
,BorderBottom
,BorderRight
:控件边框的颜色。将BorderStyle
设置为None
可以获得此效果。我选择了这个BorderStyle
,这样您仍然可以在需要时使用Fixed3D
和FixedSingle
。Shadow
:将其设置为True
将在控件的左侧和顶部绘制一条小的白色线条。当我想创建一个类似 OutlookBar 的标题时,我需要这个。如果不喜欢,请设置为False
。GradientMode
:选择您想要的渐变。GradientModeHover
:也许您希望鼠标在控件上时使用不同的渐变。
方法
这个控件没有太多的操作:当鼠标进入或离开控件时,它将使用一个私有字段 IsHovering
来存储控件的状态。绘图发生在 Paint
和 PaintBackGround
方法中,这没有什么困难的。看看代码,您会发现它非常简单。
备注
当为此类型的控件创建一个 ClassLibrary 时,不要忘记显式添加对 System.Windows.Forms
和 System.Drawing
的引用,它们不是标准包含的!如果您想添加设计器标记,请使用 System.ComponentModel
。我已经使用这个类将现有的 BackColor
属性重命名为 BackColor1
,并在属性设计器中的外观类别中获得我的新属性。