using Controls.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; using static System.Windows.Forms.VisualStyles.VisualStyleElement; namespace Controls { public partial class CustomNumberBox : UserControl { /// /// Конструктор /// public CustomNumberBox() { InitializeComponent(); } /// /// Шаблон вводимого значения /// private string NumPattern = @"^\+7\d{10}$"; /// /// Введенное значение /// public string? TextBoxNumber { get { if (NumPattern == null) { throw new CustomNumberException("Шаблон не заполнен!"); } Regex regex = new Regex(NumPattern); if (regex.IsMatch(textBoxNumber.Text)) { return textBoxNumber.Text; } else { throw new CustomNumberException(textBoxNumber.Text + " не соответствует шаблону!"); } } set { Regex regex = new Regex(NumPattern!); if (regex.IsMatch(value)) { textBoxNumber.Text = value; } else { throw new CustomNumberException(textBoxNumber.Text + " не соответствует шаблону!"); } } } /// /// Событие, вызываемое при смене значения /// private EventHandler _onValueChangedEvent; /// /// Событие, вызываемое при смене значения /// public event EventHandler ValueChanged { add { _onValueChangedEvent += value; } remove { _onValueChangedEvent -= value; } } /// /// Смена значения /// private void CustomNumberBox_NumberChanged(object sender, EventArgs e) { _onValueChangedEvent?.Invoke(sender, e); } } }