using ToolsDesktop.Interfaces; using ToolsModule.ManagmentExtension; using System; using System.Windows.Forms; namespace ToolsDesktop.BaseControls { /// /// Контрол, предоставляющий работу с датой /// public partial class BaseControlDateTime : AbstractBaseControl, IBaseControl { /// /// Конструктор /// /// /// /// /// /// /// public BaseControlDateTime(string propertyName, bool mustFilling, bool readOnly, DateTime minDate, DateTime maxDate, string customDateFormat) : base(propertyName, mustFilling, readOnly) { InitializeComponent(); _baseControl = this; dateTimePicker.ValueChanged += (object sender, EventArgs e) => { CallOnValueChangeEvent(); }; if (minDate > DateTime.MinValue) { dateTimePicker.MinDate = minDate; } if (maxDate > DateTime.MinValue) { dateTimePicker.MaxDate = maxDate; } if(customDateFormat.IsNotEmpty()) { dateTimePicker.CustomFormat = customDateFormat; } panelControl.Controls.Add(dateTimePicker); if (!_mustFilling) { checkBoxNullable.CheckedChanged += (object sender, EventArgs e) => { dateTimePicker.Enabled = !(sender as CheckBox).Checked; CallOnValueChangeEvent(); }; panelControl.Controls.Add(checkBoxNullable); } } public void SetDefaultValue() => _originalValue = _mustFilling ? DateTime.Now : null; public void SetValueToControl(object value) { if (value != null) { dateTimePicker.Value = Convert.ToDateTime(value); } else if (!_mustFilling) { checkBoxNullable.Checked = true; } } public void DropValueForControl() { if (_originalValue != null) { dateTimePicker.Value = Convert.ToDateTime(_originalValue); } else if (!_mustFilling) { checkBoxNullable.Checked = true; } } public bool CheckValueForControl() => true; public object GetValueFromControl() => !_mustFilling && checkBoxNullable.Checked ? null : Convert.ToDateTime(dateTimePicker.Value); public string GetPropertyName() => _propertyName; } }