95 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
#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
 | 
						|
        /// <summary>
 | 
						|
        /// Initializes a new instance of the NumericYearInput class.
 | 
						|
        /// </summary>
 | 
						|
        public NumericYearInput()
 | 
						|
        {
 | 
						|
            this.MinValue = System.DateTime.MinValue.Year;
 | 
						|
            this.MaxValue = System.DateTime.MaxValue.Year;
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Internal Implementation
 | 
						|
        private eYearDisplayFormat _YearDisplayFormat = eYearDisplayFormat.FourDigit;
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the year display format. Default value is four digit format.
 | 
						|
        /// </summary>
 | 
						|
        [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
 | 
						|
 |