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 COP.Exceptions; namespace COP { public partial class UserDateTimePicker : UserControl { private DateTime? minValue; private DateTime? maxValue; public event EventHandler? _valueChanged; public UserDateTimePicker() { InitializeComponent(); } public DateTime? MinValue { get { return minValue; } set { minValue = value; } } public DateTime? MaxValue { get { return maxValue; } set { maxValue = value; } } public DateTime? SelectedValue { get { if (!minValue.HasValue || !maxValue.HasValue) { throw new NoRangeException("Диапозон не был задан"); } else if (dateTimePicker.Value < minValue || dateTimePicker.Value > maxValue) { throw new NotIncludedInRangeException("Selected value is out of range."); } return dateTimePicker.Value; } set { if (!minValue.HasValue || !maxValue.HasValue || value < minValue || value > maxValue) { return; } dateTimePicker.Value = value.Value; } } public event EventHandler ValueChanged { add { _valueChanged += value; } remove { _valueChanged -= value; } } private void DateTimePicker_ValueChanged(object sender, EventArgs e) { _valueChanged?.Invoke(this, e); } } }