private void scrollingTimer_Tick(object sender, EventArgs e) { if (this.shouldScroll) { int offset = 0; if (this.scrollUp) { FastNavigationItem item = this.hostedControl.Items[0] as FastNavigationItem; if (item.View.ViewStartDate <= this.Calendar.RangeMinDate) { return; } viewIndex--; offset = 1; } else { FastNavigationItem item = this.hostedControl.Items[this.hostedControl.Items.Count - 1] as FastNavigationItem; if (item.View.ViewEndDate >= this.Calendar.RangeMaxDate) { return; } viewIndex++; offset = -1; } int a = Calendar.RangeMaxDate.Month + (Calendar.RangeMaxDate.Year * 12); int b = Calendar.RangeMinDate.Month + (Calendar.RangeMinDate.Year * 12); if ((a - b) > hostedControl.Items.Count) { CalendarView maxView = (this.hostedControl.Items[this.hostedControl.Items.Count - 1] as FastNavigationItem).View; maxView = maxView.GetNextView(-offset); int maxViewMonth = maxView.ViewStartDate.Month; int maxViewYear = maxView.ViewStartDate.Year; CalendarView minView = (this.hostedControl.Items[0] as FastNavigationItem).View; minView = minView.GetNextView(-offset); int minViewMonth = minView.ViewStartDate.Month; int minViewYear = minView.ViewStartDate.Year; InitializeNavItems(viewIndex); if ((maxViewMonth >= this.Calendar.RangeMaxDate.Month && maxViewYear >= this.Calendar.RangeMaxDate.Year) || (minViewMonth <= this.Calendar.RangeMinDate.Month && minViewYear <= this.Calendar.RangeMinDate.Year)) { viewIndex += offset; } } this.scrollingTimer.Interval = 2500 / (Math.Abs(offsetPoint.Y) + 1); } }