using ComponentProgramming.Exceptions; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows.Forms; namespace ComponentProgramming { public partial class UserTextBox : UserControl { public UserTextBox() { InitializeComponent(); } public int? MinValue { get; set; } public int? MaxValue { get; set; } private EventHandler _changeEvent; public event EventHandler ChangeEvent { add { _changeEvent += value; } remove { _changeEvent -= value; } } private void textBox_TextChanged(object sender, EventArgs e) { _changeEvent?.Invoke(sender, e); if (MinValue != null && MaxValue != null) { if (textBox.Text.Length < MinValue || textBox.Text.Length > MaxValue) { textBox.ForeColor = Color.Red; } else { textBox.ForeColor = Color.Black; } } } public string TextBoxValue { get { if (MinValue == null && MaxValue == null) { throw new WrongRangeException("Диапазон не задан."); } if (textBox.Text.Length >= MinValue && textBox.Text.Length <= MaxValue) { return textBox.Text; } throw new WrongRangeException("Введенное значение не входит в диапазон."); } set { if (MinValue != null && MaxValue != null) { if (value.Length >= MinValue && value.Length <= MaxValue) { textBox.Text = value; _changeEvent?.Invoke(this, EventArgs.Empty); } } } } } }