private void UpdateMonths() { int gapping = 2; int calendarsX = Convert.ToInt32(Math.Max(Math.Floor((double)ClientSize.Width / (double)(MonthSize.Width + gapping)), 1.0)); int calendarsY = Convert.ToInt32(Math.Max(Math.Floor((double)ClientSize.Height / (double)(MonthSize.Height + gapping)), 1.0)); int calendars = calendarsX * calendarsY; int monthsWidth = (calendarsX * MonthSize.Width) + (calendarsX - 1) * gapping; int monthsHeight = (calendarsY * MonthSize.Height) + (calendarsY - 1) * gapping; int startX = (ClientSize.Width - monthsWidth) / 2; int startY = (ClientSize.Height - monthsHeight) / 2; int curX = startX; int curY = startY; _forwardMonthIndex = calendarsX - 1; _months = new MonthViewMonth[calendars]; for (int i = 0; i < Months.Length; i++) { Months[i] = new MonthViewMonth(this, ViewStart.AddMonths(i)); Months[i].SetLocation(new Point(curX, curY)); curX += gapping + MonthSize.Width; if ((i + 1) % calendarsX == 0) { curX = startX; curY += gapping + MonthSize.Height; } } MonthViewMonth first = Months[0]; MonthViewMonth last = Months[_forwardMonthIndex]; SetBackwardButtonBounds(new Rectangle(first.Bounds.Left + ItemPadding.Left, first.Bounds.Top + ItemPadding.Top, DaySize.Height - ItemPadding.Horizontal, DaySize.Height - ItemPadding.Vertical)); SetForwardButtonBounds(new Rectangle(first.Bounds.Right - ItemPadding.Right - BackwardButtonBounds.Width, first.Bounds.Top + ItemPadding.Top, BackwardButtonBounds.Width, BackwardButtonBounds.Height)); }
internal MonthViewDay(MonthViewMonth month, DateTime date) { _month = month; _monthView = month.MonthView; _date = date; }