using ModuleTools.Extensions; using System; using System.Drawing; namespace DesktopTools.BaseControls { /// /// Контрол, предоставляющий работу с текстовым полем на несколько строк /// public partial class BaseControlText : AbstractBaseControl { /// /// Конструктор /// /// /// /// /// /// public BaseControlText(string propertyName, bool mustFilling, bool readOnly, int? maxLength, int? height) : base(propertyName, mustFilling, readOnly) { InitializeComponent(); if (maxLength.HasValue) { textBox.MaxLength = maxLength.Value; } if (height.HasValue) { textBox.Height = height.Value; } textBox.TextChanged += (object sender, EventArgs e) => { CallOnValueChangeEvent(); }; panelControl.Controls.Add(textBox); } protected override void SetDefaultValue() => _originalValue = string.Empty; protected override void SetValueToControl(object value) => textBox.Text = value?.ToString(); public override void DropValue() => textBox.Text = _originalValue?.ToString(); public override bool CheckValue() { if(_mustFilling && textBox.Text.IsEmpty()) { BackColor = Color.OrangeRed; return false; } return true; } protected override object GetValueFromControl() { if (_mustFilling && textBox.Text.IsEmpty()) { throw new ArgumentNullException($"Поле свойства '{labelTitle.Text}' должно быть заполнено"); } return textBox.Text; } } }