AGauge控件是一个用于WinForms应用程序的图形化仪表控件,它利用GDI+技术实现。本文介绍的版本是对原始AGauge控件的改进,包含了以下新特性和功能增强:
在改进的版本中,仪表标签(之前称为CapText)和范围属性被组织到GaugeRanges和GaugeLabels集合中。这使得可以创建任意数量的标签和范围,并且可以通过代码或属性窗口中的集合编辑器进行编辑。每个标签可以有不同的字体设置,因为标签是AGaugeLabel的实例。
// 示例代码:获取和设置GaugeRanges
public AGaugeRangeCollection GaugeRanges {
get {
return _GaugeRanges;
}
}
private AGaugeRangeCollection _GaugeRanges;
// 示例代码:获取和设置GaugeLabels
public AGaugeLabelCollection GaugeLabels {
get {
return _GaugeLabels;
}
}
private AGaugeLabelCollection _GaugeLabels;
此外,每个标签都可以使用不同的字体设置,因为标签是AGaugeLabel的实例。
AGauge控件现在有两个不同的针设计类型可供选择,这些类型可以通过NeedleType属性进行选择。针类型的属性类型已从Int32(0或1)更改为枚举类型(NeedleType.Advance或NeedleType.Simple),以避免用户输入无效值。
// 示例代码:设置针类型
public NeedleType NeedleType {
get;
set;
}
ValueInRangeChanged事件已从ValueInRangeChangedDelegate更改为ValueInRangeChangedEvent,以允许多重订阅。事件仅在值进入或离开定义范围时触发。此外,ValueInRangeChangedEventArgs已更新,以包含当前范围和仪表值。
// 示例代码:ValueInRangeChanged事件
public event EventHandler ValueInRangeChanged;
private void OnValueInRangeChanged(AGaugeRange range, Single value) {
EventHandler e = ValueInRangeChanged;
if (e != null) e(this, new ValueInRangeChangedEventArgs(range, value, range.InRange));
}
ValueChanged事件被添加,以在仪表值更新时通知用户。请注意,尝试将仪表值设置在定义范围之外不会触发此事件。
// 示例代码:ValueChanged事件
public event EventHandler ValueChanged;
private void OnValueChanged() {
EventHandler e = ValueChanged;
if (e != null) e(this, null);
}