(AGauge) WinForms Gauge Control - Discontinued


 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 

WinForm Gauge - Released 2021


Looking for more gauge control? Check out this high performance .NET Windows Form gauge for info-graphics and real-time dashboard.Find out more  at https://winformgauge.codearteng.com/


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.



Dynamic Gauge Label and Gauge Range

Properties for gauge label (previously known as 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.Description("Gauge Ranges.")]
    public AGaugeRangeCollection GaugeRanges { get { return _GaugeRanges; } }
    private AGaugeRangeCollection _GaugeRanges;
    System.ComponentModel.Description("Gauge Labels.")]
    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.



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(thisnew ValueInRangeChangedEventArgs(range, value, 

    /// <summary>
    /// Event argument for <see cref="ValueInRangeChanged"/> event.
    /// </summary>
    public class ValueInRangeChangedEventArgs : EventArgs
        /// <summary>
        /// Affected GaugeRange
        /// </summary>
        public AGaugeRange Range { getprivate set; }
        /// <summary>
        /// Gauge Value
        /// </summary>
        public Single Value { getprivate set; }
        /// <summary>
        /// True if value is within current range.
        /// </summary>
        public bool InRange { getprivate 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.

    [Description("This event is raised when gauge value changed.")]
    public event EventHandler ValueChanged;
    private void OnValueChanged()
        EventHandler e = ValueChanged;
        if (e != null) e(thisnull);



This article, along with any associated source code and files, is licensed under The zlib/libpng License


  • 28/08/2012: Initial Release (Version 2.0.0)

Popular posts from this blog

WinForms Controls

C# DSP Simulation - DSP Lab