OriginalGriff
Есть проблемы с этим подходом: особенно в январе, марте, мае, июле, августе, октябре и декабре, которые не вписываются в вашу схему - имея 31 день в каждом!
Поэтому для начала увеличьте свой "календарь" до матрицы 12 на 31 (а на самом деле сделайте ее 13 на 32, чтобы у вас было место для заголовков: строка для 1...31 и столбец для "Jan"..."Dec"
Есть несколько способов сделать это, но самый простой, вероятно, создать UserControl: щелкните правой кнопкой мыши ваш проект в обозревателе решений и выберите "Добавить"..."пользовательский элемент управления...".
Назовите его "MyCalendar" и нажмите кнопку "Добавить".
Вы получите пустой дисплей с некоторыми "ручками захвата" - используйте их, чтобы сделать его больше.
Теперь перейдите в панель свойств и выберите пункт "события" - это кнопка "молния".
Дважды щелкните событие "Paint" , и система создаст для вас пустое событие в элементе управления.
Добавьте этот код:
private void MyCalendar_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
int colWidth = Width / 32;
int rowHeight = Height / 13;
Brush b1 = Brushes.Salmon;
Brush b2 = Brushes.Cyan;
bool drawB1 = true;
for (int x = colWidth; x < Width; x += colWidth)
{
for (int y = rowHeight; y < Height; y += rowHeight)
{
g.FillRectangle(drawB1 ? b1 : b2, new Rectangle(x, y, colWidth, rowHeight));
drawB1 = !drawB1;
}
}
}
Теперь скомпилируйте приложение, а затем перетащите экземпляр MyCalendar из панели инструментов в форму. Видишь все эти красивые квадраты? :смеяться:
Это не будет делать именно то, что вы хотите, но это место для начала - так что используйте его в качестве "шаблона" для получения вашего фактического календаря для работы. Сначала попробуйте изменить его так, чтобы он рисовал 14 розовых квадратов и 14 голубых. Затем заставьте его нарисовать нужное количество дней в каждом месяце. и так далее. Делайте это маленькими этапами, и вы доберетесь туда!