WinForms Gauge Control
Introduction
WinForm Gauge - Released 2021
WinForm Gauge is successor for AGauge control, redesigned with better structure, performance and features.
Find out more at
https://winformgauge.codearteng.com/
Original AGauge control
AGauge is a gauge control for WinForms create by A.J.Bauer using GDI+.
Original code was published in "Code Project - A fast and performing gauge"
The version that I published here is an improved version of AGauge which
contains the following changes.
Download from GitHub
NOTE: We no longer actively maintaining AGauge.
The development of this package is taken over by nutdotnet.
Refer to his GitHub and NuGet page for details.
Improvements
Dynamic Gauge Label and Gauge Range
Properties for gauge label (previously known as
Range and label can be edited either from code or using the collection editor from the properties window.
CapText
) and
range are grouped into GaugeRanges
and
GaugeLabels
which allow us to create any number of range and
label as we wish.Range and label can be edited either from code or using the collection editor from the properties window.
[System.ComponentModel.Browsable(true), System.ComponentModel.Category("AGauge"), System.ComponentModel.Description("Gauge Ranges.")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public AGaugeRangeCollection GaugeRanges { get { return _GaugeRanges; } } private AGaugeRangeCollection _GaugeRanges; [System.ComponentModel.Browsable(true), System.ComponentModel.Category("AGauge"), System.ComponentModel.Description("Gauge Labels.")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public AGaugeLabelCollection GaugeLabels { get { return _GaugeLabels; } } private AGaugeLabelCollection _GaugeLabels;
Besides, each label can use different Font settings since label is an instance of
AGaugeLabel
.Added NeedleType Enumeration
AGauge
control has 2 different type
of needle design selectable from NeedleType
property.
Type of NeedleType
property waschanged from Int32
(0
or 1) to enumeration type (NeedleType.Advance
or
NeedleType.Simple
) to avoid
invalid entry from user.Events
Update ValueInRangeChangedEvent
ValueInRangeChangedDelegate
was changed to
ValueInRangeChangedEvent
to allow multiple subscriptions. The
event is changed to trigger only if value is entering or leaving a defined
range. Besides, ValueInRangeChangedEventArgs
was updated to
hold current range and gauge value.
[Description("This event is raised if the value is entering or leaving defined range.")] public event EventHandler<ValueInRangeChangedEventArgs> ValueInRangeChanged; private void OnValueInRangeChanged(AGaugeRange range, Single value) { EventHandler<ValueInRangeChangedEventArgs> e = ValueInRangeChanged; if (e != null) e(this, new ValueInRangeChangedEventArgs(range, value, range.InRange)); }
/// <summary> /// Event argument for <see cref="ValueInRangeChanged"/> event. /// </summary> public class ValueInRangeChangedEventArgs : EventArgs { /// <summary> /// Affected GaugeRange /// </summary> public AGaugeRange Range { get; private set; } /// <summary> /// Gauge Value /// </summary> public Single Value { get; private set; } /// <summary> /// True if value is within current range. /// </summary> public bool InRange { get; private set; } public ValueInRangeChangedEventArgs(AGaugeRange range, Single value, bool inRange) { this.Range = range; this.Value = value; this.InRange = inRange; } }
Added ValueChangedEvent
ValueChanged event is added to notify user whenever gauge value is updated.
Note that attempting to set gauge value out of defined gauge range will not trigger this event.
Note that attempting to set gauge value out of defined gauge range will not trigger this event.
[Description("This event is raised when gauge value changed.")] public event EventHandler ValueChanged; private void OnValueChanged() { EventHandler e = ValueChanged; if (e != null) e(this, null); }
License
This article, along with any associated source code and files, is licensed
under
The zlib/libpng License
History
- 28/08/2012: Initial Release (Version 2.0.0)