using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using WinFormsLibrary1.Errors; using static System.Windows.Forms.VisualStyles.VisualStyleElement; namespace WinFormsLibrary1 { public partial class CustomTextBox : UserControl { public int? MinLength { get; set; } = null; public int? MaxLength { get; set; } = null; public event EventHandler ValueChanged; public string Value { get { if (MinLength == null || MaxLength == null) throw new RangeNotSetException(); if (textBox.Text.Length < MinLength || textBox.Text.Length > MaxLength) throw new TextLengthOutOfRangeException(MinLength ?? -1, MaxLength ?? -1); return textBox.Text; } set { if (MinLength == null || MaxLength == null || textBox.Text.Length < MinLength || textBox.Text.Length > MaxLength) return; textBox.Text = value; } } public string CheckValue(string v) { if (MinLength == null || MaxLength == null) throw new RangeNotSetException(); if (v.Length < MinLength || v.Length > MaxLength) throw new TextLengthOutOfRangeException(MinLength ?? -1, MaxLength ?? -1); return v; } public CustomTextBox() { InitializeComponent(); } private void textBox1_TextChanged(object sender, EventArgs e) { ValueChanged?.Invoke(this, EventArgs.Empty); } } }