using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Windows.Forms.VisualStyles; using CreateVisualComponent.Exceptions; namespace CreateVisualComponent { public partial class InputComponent : UserControl { public EventHandler? _changeEvent; public EventHandler? _checkBoxEvent; public InputComponent() { InitializeComponent(); } public DateTime? Value { get { if (checkBoxDate.Checked) { return null; } if (string.IsNullOrEmpty(textBoxDate.Text)) { throw new NotFilledException("The textbox is empty, fill it in or click on the checkbox!"); } if (DateTime.TryParseExact(textBoxDate.Text, "dd/MM/yyyy", null, DateTimeStyles.None, out DateTime parsedDate)) { return parsedDate; } throw new IncorrectFillingException(textBoxDate.Text + " incorrect date!"); } set { checkBoxDate.Checked = value is null; textBoxDate.Text = value?.ToString("dd/MM/yyyy") ?? string.Empty; } } public event EventHandler CheckBoxEvent { add { _changeEvent += value; } remove { _changeEvent -= value; } } private void TextBoxDate_TextChanged(object sender, EventArgs e) { _changeEvent?.Invoke(sender, e); } private void CheckBoxDate_CheckedChanged(object sender, EventArgs e) { textBoxDate.Enabled = !checkBoxDate.Checked; _changeEvent?.Invoke(sender, e); } } }