выбранный диапазон управления месяцем календаря отображается неправильно

У меня есть элемент управления месячным календарем в моей форме, и когда я выбираю диапазон, диапазон просто исчезает. Я проверил titlebackcolor (Highlight) и titleforecolor (AliceBlue), и они не установлены на белый цвет.

Кто-нибудь знает, что я могу сделать, чтобы исправить это?


person Sean P    schedule 25.02.2010    source источник


Ответы (2)


Я получаю такое же поведение. На этом снимке экрана я выбрал период с 12 по 14 января 2011 года.

Неверное отображение диапазона в элементе управления MonthCalendar

Причина неправильного рендеринга связана с визуальным Стили. Они включены по умолчанию, что обычно и требуется. Например, он включает кнопки с закругленными углами.

Если вы отключите VisualStyles (удалив строку Application.EnableVisualStyles() из вашего Program.cs), CalendarControl отобразит диапазон, как и ожидалось. Однако отключение визуальных стилей также означает, что рендеринг некоторых других элементов управления, таких как кнопка и элемент управления CheckBox, выглядит устаревшим. На этом снимке экрана показан правильно отображаемый выбор диапазона в элементе управления MonthlyCalendar, а также показаны устаревшие элементы управления Button и CheckBox.

Правильный рендеринг диапазона в элементе управления MonthCalendar

Хотя ссылка MSDN для в классе MonthCalendar это не упоминается, в Справочник MSDN по визуальным стилям упоминает это в своем примечании.

Я не знаю, как не использовать рендеринг Visual Styles в Vista или Windows 7, так как у меня под рукой только Windows XP. Но если рендеринг в этих операционных системах одинаков, вам лучше вообще не использовать выбор диапазона элемента управления MonthCalendar.

person comecme    schedule 18.01.2011
comment
Спасибо! это помогло с точной проблемой, с которой я столкнулся - person Josh Weatherly; 27.05.2011

Проверьте TrailingForeColorсвойство.

Также ознакомьтесь с подробностями в MSDN здесь. Вы можете узнать что-нибудь полезное, что вы пропустили.

person IsmailS    schedule 06.05.2010