65.9K
CodeProject 正在变化。 阅读更多。
Home

创建丰富的标签

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.40/5 (10投票s)

2007年2月15日

CPOL

2分钟阅读

viewsIcon

60457

downloadIcon

755

扩展 Windows.Forms.Label 控件。

Sample image

引言

我一直在寻找一个可以用于不同类型的标题和说明的控件。在创建了几个单独的控件之后,我决定只创建一个控件:一个可以配置为具有不同颜色、不同边框并在鼠标操作时做出响应的控件。

结构

开始做这件事的最好方法是寻找一个好的基础。我决定从现有的 Windows.Forms.Label 继承,而不是从头开始创建一个控件。通过这样做,我不需要编写任何代码来绘制文本;基本控件会为我处理这个问题。

属性

除了 Label 控件的现有属性之外,我创建了以下属性

  • BackColor1:这不是一个新的属性。它是从我继承的 Label 控件的现有 BackColor 属性。我将其重命名为 BackColor1,因为之后会有第二个 BackColor
  • BackColor2:通过使用两种颜色,我可以绘制出漂亮的渐变颜色。
  • BackColorHover1:当鼠标进入控件时,您可以选择哪个颜色将用于第一个渐变颜色。如果您不想进行任何操作,请使用与 BackColor1 属性相同的颜色。
  • BackcolorHover2:与上面的相同。
  • BorderLeft, BorderTop, BorderBottom, BorderRight:控件边框的颜色。将 BorderStyle 设置为 None 可以获得此效果。我选择了这个 BorderStyle,这样您仍然可以在需要时使用 Fixed3DFixedSingle
  • Shadow:将其设置为 True 将在控件的左侧和顶部绘制一条小的白色线条。当我想创建一个类似 OutlookBar 的标题时,我需要这个。如果不喜欢,请设置为 False
  • GradientMode:选择您想要的渐变。
  • GradientModeHover:也许您希望鼠标在控件上时使用不同的渐变。

方法

这个控件没有太多的操作:当鼠标进入或离开控件时,它将使用一个私有字段 IsHovering 来存储控件的状态。绘图发生在 PaintPaintBackGround 方法中,这没有什么困难的。看看代码,您会发现它非常简单。

备注

当为此类型的控件创建一个 ClassLibrary 时,不要忘记显式添加对 System.Windows.FormsSystem.Drawing 的引用,它们不是标准包含的!如果您想添加设计器标记,请使用 System.ComponentModel。我已经使用这个类将现有的 BackColor 属性重命名为 BackColor1,并在属性设计器中的外观类别中获得我的新属性。

© . All rights reserved.