#if FRAMEWORK20 using System; using System.Collections.Generic; using System.Text; using System.ComponentModel; namespace DevComponents.Editors.DateTimeAdv { public class NumericYearInput : VisualIntegerInput, IDateTimePartInput { #region Private Variables #endregion #region Events #endregion #region Constructor /// /// Initializes a new instance of the NumericYearInput class. /// public NumericYearInput() { this.MinValue = System.DateTime.MinValue.Year; this.MaxValue = System.DateTime.MaxValue.Year; } #endregion #region Internal Implementation private eYearDisplayFormat _YearDisplayFormat = eYearDisplayFormat.FourDigit; /// /// Gets or sets the year display format. Default value is four digit format. /// [DefaultValue(eYearDisplayFormat.FourDigit)] public eYearDisplayFormat YearDisplayFormat { get { return _YearDisplayFormat; } set { if (_YearDisplayFormat != value) { _YearDisplayFormat = value; InvalidateArrange(); } } } protected override string GetMeasureString() { return GetFormattedYear(base.GetMeasureString()); } protected override string GetRenderString() { return GetFormattedYear(base.GetRenderString()); } private string GetFormattedYear(string s) { if (this.IsFocused || s.Length < 4 || _YearDisplayFormat == eYearDisplayFormat.FourDigit) return s; if (_YearDisplayFormat == eYearDisplayFormat.TwoDigit) return s.Substring(2); return s.Substring(3); } protected override void InputComplete(bool sendNotification) { UpdateYearValue(); base.InputComplete(sendNotification); } protected override void OnInputLostFocus() { UpdateYearValue(); base.OnInputLostFocus(); } private void UpdateYearValue() { if (!this.IsEmpty && this.Value < 100) this.Value = int.Parse(System.DateTime.Now.Year.ToString().Substring(0, 2) + this.Value.ToString("00")); } #endregion #region IDateTimePartInput Members eDateTimePart IDateTimePartInput.Part { get { return eDateTimePart.Year; } } #endregion } } #endif