private Point GetLocationForButton(DateTime day, DayInCalendarForm form) { //американская неделя начинается с воскресенья. Поэтому сдвигаем в конец. int x = day.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)day.DayOfWeek; x--; int weekDelta = 7 - x; //когда месяц начинается не с понедельника int y = (day.Day + weekDelta) / 7; return(new Point(x * (form.Width + 5), y * (form.Height + 5))); }
private void Fill(List <DayInCalendar> days) { //заполнить таблицу днями недели из List'а //в листе должны быть даты только из текущего месяца for (int i = 0; i < days.Count; i++) { DayInCalendar day = days[i]; DayInCalendarForm form = new DayInCalendarForm(day); mainPanel.Controls.Add(form); form.Location = GetLocationForButton(day.date, form); } }