using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace JYControl { /// /// Class for the Led control. /// public partial class LBLed : LBIndustrialCtrlBase { #region (* Enumeratives *) public enum LedState { Off = 0, On, Blink, } public enum LedLabelPosition { Left = 0, Top, Right, Bottom, } public enum LedStyle { Circular = 0, Rectangular, } #endregion #region (* Properties variables *) private Color ledColor; private LedState state; private LedStyle style; private LedLabelPosition labelPosition; private String label = "Led"; private SizeF ledSize; private int blinkInterval = 500; #endregion #region (* Class variables *) //private Timer tmrBlink; private bool blinkIsOn = false; #endregion #region (* Constructor *) public LBLed() { InitializeComponent(); this.Size = new Size(20, 20); this.ledColor = Color.Red; this.state = LBLed.LedState.Off; this.style = LBLed.LedStyle.Circular; this.blinkIsOn = false; this.ledSize = new SizeF(10F, 10F); this.labelPosition = LedLabelPosition.Top; } #endregion #region (* Properties *) [ Category("Led"), Description("改变LED灯样式") ] public LedStyle Style { get { return style; } set { style = value; this.CalculateDimensions(); } } [ Category("Led"), Description("改变LED灯颜色") ] public Color LedColor { get { return ledColor; } set { ledColor = value; Invalidate(); } } [ Category("Led"), Description("改变LED灯状态") ] public LedState State { get { return state; } set { state = value; if (state == LedState.Blink) { this.blinkIsOn = true; this.tmrBlink.Interval = this.BlinkInterval; this.tmrBlink.Start(); } else { this.blinkIsOn = true; this.tmrBlink.Stop(); } Invalidate(); } } [ Category("Led"), Description("Size of the led") ] public SizeF LedSize { get { return this.ledSize; } set { this.ledSize = value; this.CalculateDimensions(); Invalidate(); } } [ Category("Led"), Description("Label of the led") ] public String Label { get { return this.label; } set { this.label = value; Invalidate(); } } [ Category("Led"), Description("Position of the label of the led") ] public LedLabelPosition LabelPosition { get { return this.labelPosition; } set { this.labelPosition = value; this.CalculateDimensions(); Invalidate(); } } [ Category("Led"), Description("Interval for the blink state of the led") ] public int BlinkInterval { get { return this.blinkInterval; } set { this.blinkInterval = value; } } [Browsable(false)] public bool BlinkIsOn { get { return this.blinkIsOn; } } #endregion #region (* Events delegates *) void OnBlink(object sender, EventArgs e) { if (this.State == LedState.Blink) { if (this.blinkIsOn == false) this.blinkIsOn = true; else this.blinkIsOn = false; this.Invalidate(); } } #endregion #region (* Overrided methods *) protected override ILBRenderer CreateDefaultRenderer() { return new LBLedRenderer(); } #endregion } }