#region Imports using DPumpHydr.WinFrmUI.RLT.Util; using System; using System.Collections; using System.ComponentModel; using System.Diagnostics; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Text; using System.Runtime.CompilerServices; using System.Threading; using System.Windows.Forms; #endregion namespace DPumpHydr.WinFrmUI.RLT.Controls { #region AloneRadioButton [DefaultEvent("CheckedChanged")] public class AloneRadioButton : Control { public delegate void CheckedChangedEventHandler(object sender, EventArgs e); [DebuggerBrowsable(DebuggerBrowsableState.Never), CompilerGenerated] private AloneRadioButton.CheckedChangedEventHandler CheckedChangedEvent; private bool _Checked; private bool _EnabledCalc; private Graphics G; public event AloneRadioButton.CheckedChangedEventHandler CheckedChanged { [CompilerGenerated] add { AloneRadioButton.CheckedChangedEventHandler checkedChangedEventHandler = CheckedChangedEvent; AloneRadioButton.CheckedChangedEventHandler checkedChangedEventHandler2; do { checkedChangedEventHandler2 = checkedChangedEventHandler; AloneRadioButton.CheckedChangedEventHandler value2 = (AloneRadioButton.CheckedChangedEventHandler)Delegate.Combine(checkedChangedEventHandler2, value); checkedChangedEventHandler = Interlocked.CompareExchange(ref CheckedChangedEvent, value2, checkedChangedEventHandler2); } while (checkedChangedEventHandler != checkedChangedEventHandler2); } [CompilerGenerated] remove { AloneRadioButton.CheckedChangedEventHandler checkedChangedEventHandler = CheckedChangedEvent; AloneRadioButton.CheckedChangedEventHandler checkedChangedEventHandler2; do { checkedChangedEventHandler2 = checkedChangedEventHandler; AloneRadioButton.CheckedChangedEventHandler value2 = (AloneRadioButton.CheckedChangedEventHandler)Delegate.Remove(checkedChangedEventHandler2, value); checkedChangedEventHandler = Interlocked.CompareExchange(ref CheckedChangedEvent, value2, checkedChangedEventHandler2); } while (checkedChangedEventHandler != checkedChangedEventHandler2); } } public bool Checked { get => _Checked; set { _Checked = value; Invalidate(); } } public new bool Enabled { get => EnabledCalc; set { _EnabledCalc = value; bool enabled = Enabled; if (enabled) { Cursor = Cursors.Hand; } else { Cursor = Cursors.Default; } Invalidate(); } } [DisplayName("Enabled")] public bool EnabledCalc { get => _EnabledCalc; set { Enabled = value; Invalidate(); } } public AloneRadioButton() { SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.SupportsTransparentBackColor | ControlStyles.UserPaint, true); DoubleBuffered = true; Enabled = true; Size = new(138, 17); ForeColor = AloneLibrary.ColorFromHex("#7C858E"); BackColor = Color.Transparent; } protected override void OnPaint(PaintEventArgs e) { G = e.Graphics; G.SmoothingMode = SmoothingMode.HighQuality; G.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; base.OnPaint(e); //G.Clear(BackColor); bool enabled = Enabled; if (enabled) { using (SolidBrush solidBrush = new(AloneLibrary.ColorFromHex("#F3F4F7"))) { using Pen pen = new(AloneLibrary.ColorFromHex("#D0D5D9")); using SolidBrush solidBrush2 = new(ForeColor); using Font font = new("Segoe UI", 9f); G.FillEllipse(solidBrush, new Rectangle(0, 0, 16, 16)); G.DrawEllipse(pen, new Rectangle(0, 0, 16, 16)); G.DrawString(Text, font, solidBrush2, new Point(25, 0)); } bool @checked = Checked; if (@checked) { using SolidBrush solidBrush3 = new(AloneLibrary.ColorFromHex("#575C62")); G.FillEllipse(solidBrush3, new Rectangle(4, 4, 8, 8)); } } else { using (SolidBrush solidBrush4 = new(AloneLibrary.ColorFromHex("#F5F5F8"))) { using Pen pen2 = new(AloneLibrary.ColorFromHex("#E1E1E2")); using SolidBrush solidBrush5 = new(AloneLibrary.ColorFromHex("#D0D3D7")); using Font font2 = new("Segoe UI", 9f); G.FillEllipse(solidBrush4, new Rectangle(0, 0, 16, 16)); G.DrawEllipse(pen2, new Rectangle(0, 0, 16, 16)); G.DrawString(Text, font2, solidBrush5, new Point(25, 0)); } bool checked2 = Checked; if (checked2) { using SolidBrush solidBrush6 = new(AloneLibrary.ColorFromHex("#BCC1C6")); G.FillEllipse(solidBrush6, new Rectangle(4, 4, 8, 8)); } } } protected override void OnMouseUp(MouseEventArgs e) { base.OnMouseUp(e); bool enabled = Enabled; if (enabled) { try { IEnumerator enumerator = base.Parent.Controls.GetEnumerator(); while (enumerator.MoveNext()) { Control control = (Control)enumerator.Current; bool flag = control is AloneRadioButton; if (flag) { ((AloneRadioButton)control).Checked = false; } } } finally { } Checked = !Checked; CheckedChangedEvent?.Invoke(this, e); } } protected override void OnResize(EventArgs e) { base.OnResize(e); base.Size = new(base.Width, 17); } } #endregion }