using ToolsDesktop.Interfaces; using ToolsModule.ManagmentExtension; using System; using System.Drawing; namespace ToolsDesktop.BaseControls { /// /// Контрол, предоставляющий работу с однострочным текстовым полем /// public partial class BaseControlString : AbstractBaseControl, IBaseControl { /// /// Конструктор /// /// /// /// /// public BaseControlString(string propertyName, bool mustFilling, bool readOnly, int maxLength) : base(propertyName, mustFilling, readOnly) { InitializeComponent(); _baseControl = this; if (maxLength != 0) { textBox.MaxLength = maxLength; } textBox.TextChanged += (object sender, EventArgs e) => { CallOnValueChangeEvent(); }; panelControl.Controls.Add(textBox); } public void SetDefaultValue() => _originalValue = string.Empty; public void SetValueToControl(object value) => textBox.Text = value?.ToString(); public void DropValueForControl() => textBox.Text = _originalValue?.ToString(); public bool CheckValueForControl() { if (_mustFilling && textBox.Text.IsEmpty()) { BackColor = Color.OrangeRed; return false; } return true; } public object GetValueFromControl() { if (_mustFilling && textBox.Text.IsEmpty()) { throw new ArgumentNullException($"Поле свойства '{labelTitle.Text}' должно быть заполнено"); } return textBox.Text; } public string GetPropertyName() => _propertyName; } }