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 CustomTextBoxNumber : UserControl
{
///
/// Конструктор
///
public CustomTextBoxNumber()
{
InitializeComponent();
}
///
/// Шаблон вводимого значения
///
private string? _numberPattern;
///
/// Шаблон вводимого значения
///
private string? NumPattern
{
get { return _numberPattern; }
set { _numberPattern = value; }
}
///
/// Введенное значение
///
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);
}
}
}