2015-01-30 2 views
0

Я создаю приложение Windows, в котором я использую календарь по умолчанию для назначения. Я хотел изучить каждый день календаря и задать цвет фона некоторым из них, чтобы отличить его от остальных дат, таких как доступность, закрытие встречи, праздники и т. Д.Программная установка цвета в определенные дни в календаре для приложения Windows

Я искал и обнаружил, что используя OnDayRender возможно событие для изменения BackColor определенных дней. Но я понял, что он доступен только для веб-форм, а не для оконной формы. Есть ли решение для того же или любого альтернативного способа реализовать то же самое в winforms? (Такие, как с помощью встроенного управления WPF и т.д.)

+0

Есть несколько примеров этого в Интернете .. вы действительно выполнили поиск 'Google' ..? вот кодированный проект, который вы можете использовать для кода из http://www.codeproject.com/Articles/10840/Another-Month-Calendar – MethodMan

+0

Спасибо MethodMan! Я успешно это сделал. Но контроль требует слишком долгого ответа. Любая помощь ?? – user4006122

ответ

3

Может быть, вы можете сделать что-то вроде этого:

DateTime someDate = new DateTime(); //or an array of dates, then run a loop 

private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e) 
{ 
    if (monthCalendar1.SelectionStart == someDate) 
    { 
     monthCalendar1.BackColor = SystemColors.someColor; 
    } 
    else 
    { 
     monthCalendar1.BackColor = SystemColors.Control; 
    } 
} 
1

Там нет простого способа сделать это в WinForms.

Один из вариантов - создать свой собственный календарь, который наследуется от элемента управления MonthCalendar. Вам придется переопределить метод OnPaint. В методе вы должны локализовать Rectangle для каждой даты, в которую вы хотите изменить фон, а затем изменить его (фон). Пример создания собственного календарного управления с помощью OnPaint и WndProc overriden можно найти here. Пример не делает именно то, что вы хотите, но это хорошее начало.

Существует, однако, другой вариант. Вы не первый человек, который ищет эту функцию в элементе управления календарем. И вот кто-то уже создал очень настраиваемый календарь WinForms. Он делает то, что вы хотите, и многое другое. Это называется Another Month Calendar.

+0

Спасибо, еще месяц Календер - это то, что мне нужно. Но требуется слишком много времени для ответа, как это решить? – user4006122

Смежные вопросы