using Library14Petrushin.Exeptions;
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;

namespace Library14Petrushin
{
    public partial class TextBoxRange : UserControl
    {
        public int ?MinLength { get; set; }
        public int ?MaxLength { get; set; }
        public event EventHandler? ValueChanged;
        public string InputValue
        {
            get
            {
                if (MinLength == null && MaxLength == null)
                {
                    throw new RangeException("Диапазон не задан.");
                }
                if (textBox1.Text.Length < MinLength || textBox1.Text.Length > MaxLength)
                {
                    throw new RangeException("Введенное значение не входит в диапазон.");
                }
                return textBox1.Text;
            }
            set
            {
                if (MinLength != null && MaxLength != null)
                {
                    if (value.Length >= MinLength && value.Length <= MaxLength)
                    {
                        textBox1.Text = value;
                        ValueChanged?.Invoke(this, EventArgs.Empty);
                    }
                }
            }
        }
        public TextBoxRange()
        {
            InitializeComponent();
            textBox1.TextChanged += TextBox1_TextChanged;
        }
        private void TextBox1_TextChanged(object sender, EventArgs e)
        {
            ValueChanged?.Invoke(this, e);
            if (MinLength != null && MaxLength != null)
            {
                if (textBox1.Text.Length < MinLength || textBox1.Text.Length > MaxLength)
                {
                    textBox1.ForeColor = Color.Red;
                }
                else
                {
                    textBox1.ForeColor = Color.Black;
                }
            }
        }

    }
}