Member 13522501 Ответов: 2

Показать дни присутствия в календаре


ПРИВЕТ
на языке C# winform
I want to display a calendar in the output.
I want to have a place from the first day until the end of the year. I have 12 rows of 30. The rows and columns of the calendar are one month and the other is the number of days.
Company employees are present every 14 days and rest for 14 days.
I want to display the days of presence with a color and the days of rest in a different color in the calendar that is displayed.
How to do it

спасибо

Что я уже пробовал:

я не знаю что мне делать

помощь

2 Ответов

Рейтинг:
2

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 голубых. Затем заставьте его нарисовать нужное количество дней в каждом месяце. и так далее. Делайте это маленькими этапами, и вы доберетесь туда!


nv3

Прекрасный совет новичку! Вот как это делается.