using System; using System.Drawing; using Decal.Adapter.Support; using Decal.Interop.Controls; namespace Decal.Adapter.Wrappers; public class CheckBoxWrapper : ControlWrapperBase { private EventHandler evtDestroy; private EventHandler evtChange; public bool Checked { get { return base.Control.Checked; } set { base.Control.Checked = value; } } public bool RightToLeft { get { return base.Control.RightToLeft; } set { base.Control.RightToLeft = value; } } public string Text { get { return base.Control.Text; } set { base.Control.Text = value; } } public Color TextColor { get { return Util.ColorFromBGR(base.Control.TextColor); } set { base.Control.TextColor = Util.ColorToBGR(value); } } public event EventHandler Change { add { if (evtChange == null) { base.Control.Change += ChangeEvent; } evtChange = (EventHandler)Delegate.Combine(evtChange, value); } remove { evtChange = (EventHandler)Delegate.Remove(evtChange, value); if (evtChange == null) { base.Control.Change -= ChangeEvent; } } } public event EventHandler Destroy { add { if (evtDestroy == null) { base.Control.Destroy += DestroyEvent; } evtDestroy = (EventHandler)Delegate.Combine(evtDestroy, value); } remove { evtDestroy = (EventHandler)Delegate.Remove(evtDestroy, value); if (evtDestroy == null) { base.Control.Destroy -= DestroyEvent; } } } protected override void Dispose(bool disposing) { if (disposing) { if (evtChange != null) { evtChange = (EventHandler)Delegate.Remove(evtChange, evtChange); base.Control.Change -= ChangeEvent; } if (evtDestroy != null) { evtDestroy = (EventHandler)Delegate.Remove(evtDestroy, evtDestroy); base.Control.Destroy -= DestroyEvent; } } base.Dispose(disposing); } private void ChangeEvent(int ID, bool Checked) { if (evtChange != null) { evtChange(this, new CheckBoxChangeEventArgs(ID, Checked)); } } private void DestroyEvent(int ID) { if (evtDestroy != null) { evtDestroy(this, new ControlEventArgs(ID)); } } }