Winforms: MonthCalendar的ForeColor和BackColor

一、问题描述

VistaWin7中,如果启用了Visual Style,那么我们改变MonthCalendarForeColorBackColor并不能真正改变MonthCalendar的字体和背景颜色。

二、问题重现

1. 启用Visual Style:在Vista中应用Vista主题,在Win7中应用Aero主题;

2. Visual Studio中创建Winforms工程;

3. 从工具箱中拖拽一个MonthCalendarForm1上;

4. 打开属性窗口;

5. 在属性窗口中修改monthCalendar1ForeColorBackColor属性;

我们发现monthCalendar1的字体和背景颜色并没有随着ForeColorBackColor的改变而改变。

三、问题分析

Winforms通过发送消息MCM_SETCOLOR来改变MonthCalendar的颜色。根据MSDNMCM_SETCOLOR说明,当启动了Visual Style之后,我们不能改变MonthCalendar的字体和背景颜色,因为Windows会根据系统设置选择合适的颜色进行绘制。

你可能感兴趣的:(windows)