using System; using System.Drawing; using Decal.Adapter.Support; using Decal.Interop.Controls; namespace Decal.Adapter.Wrappers; public class TextBoxWrapper : ControlWrapperBase { private EventHandler evtDestroy; private EventHandler evtBegin; private EventHandler evtChange; private EventHandler evtEnd; public int Caret { get { return base.Control.Caret; } set { base.Control.Caret = value; } } public string SelectedText { get { return base.Control.SelectedText; } set { base.Control.SelectedText = 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 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; } } } public event EventHandler Begin { add { if (evtBegin == null) { base.Control.Begin += BeginEvent; } evtBegin = (EventHandler)Delegate.Combine(evtBegin, value); } remove { evtBegin = (EventHandler)Delegate.Remove(evtBegin, value); if (evtBegin == null) { base.Control.Begin -= BeginEvent; } } } 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 End { add { if (evtEnd == null) { base.Control.End += EndEvent; } evtEnd = (EventHandler)Delegate.Combine(evtEnd, value); } remove { evtEnd = (EventHandler)Delegate.Remove(evtEnd, value); if (evtEnd == null) { base.Control.End -= EndEvent; } } } protected override void Dispose(bool disposing) { if (disposing) { if (evtBegin != null) { evtBegin = (EventHandler)Delegate.Remove(evtBegin, evtBegin); base.Control.Begin -= BeginEvent; } if (evtDestroy != null) { evtDestroy = (EventHandler)Delegate.Remove(evtDestroy, evtDestroy); base.Control.Destroy -= DestroyEvent; } if (evtChange != null) { evtChange = (EventHandler)Delegate.Remove(evtChange, evtChange); base.Control.Change -= ChangeEvent; } if (evtEnd != null) { evtEnd = (EventHandler)Delegate.Remove(evtEnd, evtEnd); base.Control.End -= EndEvent; } } base.Dispose(disposing); } public void Capture() { base.Control.Capture(); } public void Select(int start, int end) { base.Control.Select(start, end); } public void SetMargins(int x, int y) { base.Control.SetMargins(x, y); } private void DestroyEvent(int ID) { if (evtDestroy != null) { evtDestroy(this, new ControlEventArgs(ID)); } } private void BeginEvent(int ID) { if (evtBegin != null) { evtBegin(this, new ControlEventArgs(ID)); } } private void ChangeEvent(int ID, string text) { if (evtChange != null) { evtChange(this, new TextBoxChangeEventArgs(ID, text)); } } private void EndEvent(int ID, bool success) { if (evtEnd != null) { evtEnd(this, new TextBoxEndEventArgs(ID, success)); } } }