예제 #1
0
            /// <summary>
            /// Constructor
            /// </summary>
            /// <param name="fromPicker"></param>
            /// <param name="toPicker"></param>
            /// <param name="reloadAction"></param>
            /// <param name="intervalSelector"></param>
            /// <param name="maxDaysInterval"></param>
            /// <param name="fromPickerDefaultValue"></param>
            /// <param name="toPickerDefaultValue"></param>
            public FilterDateHelper(DateTimePicker fromPicker, DateTimePicker toPicker, Action reloadAction, ComboBox intervalSelector, int maxDaysInterval, DayOfWeek firstDayOfWeek, FromPickerDefaultValue fromPickerDefaultValue, ToPickerDefaultValue toPickerDefaultValue)
            {
                this._fromPicker       = fromPicker;
                this._toPicker         = toPicker;
                this._reloadAction     = reloadAction;
                this._intervalSelector = intervalSelector;
                this._maxDaysInterval  = maxDaysInterval;

                //set reload after change
                ReloadAfterChange = true;

                //now
                DateTime now = DateTime.Now;

                //set from picker
                if (fromPickerDefaultValue == FromPickerDefaultValue.Today)
                {
                    _fromPicker.Value = DateTime.Now.Date;
                }
                else if (fromPickerDefaultValue == FromPickerDefaultValue.FirstDayOfWeek)
                {
                    _fromPicker.Value = now.AddDays(firstDayOfWeek - now.DayOfWeek).Date;
                }
                else if (fromPickerDefaultValue == FromPickerDefaultValue.FirstDayOfMonth)
                {
                    _fromPicker.Value = new DateTime(now.Year, now.Month, 1);
                }
                else if (fromPickerDefaultValue == FromPickerDefaultValue.FirstDayOfYear)
                {
                    _fromPicker.Value = new DateTime(now.Year, 1, 1);
                }

                //set to picker
                if (toPickerDefaultValue == ToPickerDefaultValue.FromPickerSameDay)
                {
                    _toPicker.Value = new DateTime(_fromPicker.Value.Year, _fromPicker.Value.Month, _fromPicker.Value.Day).Date.AddDays(1).AddMilliseconds(-1);
                }
                else if (toPickerDefaultValue == ToPickerDefaultValue.FromPickerPlus1W)
                {
                    _toPicker.Value = new DateTime(_fromPicker.Value.Year, _fromPicker.Value.Month, _fromPicker.Value.Day).Date.AddDays(7).AddMilliseconds(-1);
                }
                else if (toPickerDefaultValue == ToPickerDefaultValue.FromPickerPlus1M)
                {
                    _toPicker.Value = new DateTime(_fromPicker.Value.Year, _fromPicker.Value.Month, _fromPicker.Value.Day).Date.AddMonths(1).AddMilliseconds(-1);
                }
                else if (toPickerDefaultValue == ToPickerDefaultValue.FromPickerPlus3M)
                {
                    _toPicker.Value = new DateTime(_fromPicker.Value.Year, _fromPicker.Value.Month, _fromPicker.Value.Day).Date.AddMonths(3).AddMilliseconds(-1);
                }
                else if (toPickerDefaultValue == ToPickerDefaultValue.FromPickerPlus6M)
                {
                    _toPicker.Value = new DateTime(_fromPicker.Value.Year, _fromPicker.Value.Month, _fromPicker.Value.Day).Date.AddMonths(6).AddMilliseconds(-1);
                }
                else if (toPickerDefaultValue == ToPickerDefaultValue.FromPickerPlus1Y)
                {
                    _toPicker.Value = new DateTime(_fromPicker.Value.Year, _fromPicker.Value.Month, _fromPicker.Value.Day).Date.AddYears(1).AddMilliseconds(-1);
                }

                //check max interval
                if ((_toPicker.Value - _fromPicker.Value).TotalDays > _maxDaysInterval)
                {
                    _toPicker.Value = _fromPicker.Value.Date.AddDays(_maxDaysInterval).Date.AddDays(1).AddMilliseconds(-1);
                }

                //set last value
                _fromPickerLastValue = _fromPicker.Value;
                _toPickerLastValue   = _toPicker.Value;

                //attach event handlers
                _fromPicker.ValueChanged += new System.EventHandler(fromPicker_ValueChanged);
                _fromPicker.Leave        += fromPicker_Leave;
                _toPicker.ValueChanged   += new System.EventHandler(toPicker_ValueChanged);
                _toPicker.Leave          += toPicker_Leave;
                if (_intervalSelector != null)
                {
                    _intervalSelector.SelectedIndexChanged += new System.EventHandler(intervalSelector_SelectedIndexChanged);
                }
                _fromPicker.KeyDown += (sender, e) => fromDateTimePicker_KeyDown(sender, e, _toPicker);

                //set reload after change
                ReloadAfterChange = true;
            }
            /// <summary>
            /// Constructor
            /// </summary>
            /// <param name="fromPicker"></param>
            /// <param name="toPicker"></param>
            /// <param name="reloadAction"></param>
            /// <param name="intervalSelector"></param>
            /// <param name="maxDaysInterval"></param>
            /// <param name="fromPickerDefaultValue"></param>
            /// <param name="toPickerDefaultValue"></param>
            public FilterDateHelper(DateTimePicker fromPicker, DateTimePicker toPicker, Action reloadAction, ComboBox intervalSelector, int maxDaysInterval, DayOfWeek firstDayOfWeek, FromPickerDefaultValue fromPickerDefaultValue, ToPickerDefaultValue toPickerDefaultValue)
            {
                this._fromPicker = fromPicker;
                this._toPicker = toPicker;
                this._reloadAction = reloadAction;
                this._intervalSelector = intervalSelector;
                this._maxDaysInterval = maxDaysInterval;

                //set reload after change
                ReloadAfterChange = true;

                //now
                DateTime now = DateTime.Now;

                //set from picker
                if (fromPickerDefaultValue == FromPickerDefaultValue.Today)
                    _fromPicker.Value = DateTime.Now.Date;
                else if (fromPickerDefaultValue == FromPickerDefaultValue.FirstDayOfWeek)
                    _fromPicker.Value = now.AddDays(firstDayOfWeek - now.DayOfWeek).Date;
                else if (fromPickerDefaultValue == FromPickerDefaultValue.FirstDayOfMonth)
                    _fromPicker.Value = new DateTime(now.Year, now.Month, 1);
                else if (fromPickerDefaultValue == FromPickerDefaultValue.FirstDayOfYear)
                    _fromPicker.Value = new DateTime(now.Year, 1, 1);

                //set to picker
                if (toPickerDefaultValue == ToPickerDefaultValue.FromPickerSameDay)
                    _toPicker.Value = new DateTime(_fromPicker.Value.Year, _fromPicker.Value.Month, _fromPicker.Value.Day).Date.AddDays(1).AddMilliseconds(-1);
                else if (toPickerDefaultValue == ToPickerDefaultValue.FromPickerPlus1W)
                    _toPicker.Value = new DateTime(_fromPicker.Value.Year, _fromPicker.Value.Month, _fromPicker.Value.Day).Date.AddDays(7).AddMilliseconds(-1);
                else if (toPickerDefaultValue == ToPickerDefaultValue.FromPickerPlus1M)
                    _toPicker.Value = new DateTime(_fromPicker.Value.Year, _fromPicker.Value.Month, _fromPicker.Value.Day).Date.AddMonths(1).AddMilliseconds(-1);
                else if (toPickerDefaultValue == ToPickerDefaultValue.FromPickerPlus3M)
                    _toPicker.Value = new DateTime(_fromPicker.Value.Year, _fromPicker.Value.Month, _fromPicker.Value.Day).Date.AddMonths(3).AddMilliseconds(-1);
                else if (toPickerDefaultValue == ToPickerDefaultValue.FromPickerPlus6M)
                    _toPicker.Value = new DateTime(_fromPicker.Value.Year, _fromPicker.Value.Month, _fromPicker.Value.Day).Date.AddMonths(6).AddMilliseconds(-1);
                else if (toPickerDefaultValue == ToPickerDefaultValue.FromPickerPlus1Y)
                    _toPicker.Value = new DateTime(_fromPicker.Value.Year, _fromPicker.Value.Month, _fromPicker.Value.Day).Date.AddYears(1).AddMilliseconds(-1);

                //check max interval
                if ((_toPicker.Value - _fromPicker.Value).TotalDays > _maxDaysInterval)
                    _toPicker.Value = _fromPicker.Value.Date.AddDays(_maxDaysInterval).Date.AddDays(1).AddMilliseconds(-1);

                //set last value
                _fromPickerLastValue = _fromPicker.Value;
                _toPickerLastValue = _toPicker.Value;

                //attach event handlers
                _fromPicker.ValueChanged += new System.EventHandler(fromPicker_ValueChanged);
                _fromPicker.Leave += fromPicker_Leave;
                _toPicker.ValueChanged += new System.EventHandler(toPicker_ValueChanged);
                _toPicker.Leave += toPicker_Leave;
                if (_intervalSelector != null)
                    _intervalSelector.SelectedIndexChanged += new System.EventHandler(intervalSelector_SelectedIndexChanged);
                _fromPicker.KeyDown += (sender, e) => fromDateTimePicker_KeyDown(sender, e, _toPicker);

                //set reload after change
                ReloadAfterChange = true;
            }