using DesktopTools.Interfaces; using ModuleTools.Extensions; using System; using System.Drawing; namespace DesktopTools.BaseControls { /// /// Контрол, предоставляющий работу с текстовым полем на несколько строк /// public partial class BaseControlText : AbstractBaseControl, IBaseControl { /// /// Конструктор /// /// /// /// /// /// public BaseControlText(string propertyName, bool mustFilling, bool readOnly, int maxLength, int height) : base(propertyName, mustFilling, readOnly) { InitializeComponent(); _baseControl = this; if (maxLength != 0) { textBox.MaxLength = maxLength; } if (height != 0) { textBox.Height = height; Height = height; } 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; } }