一、问题描述
在Vista和Win7中,如果启用了Visual Style,那么我们改变MonthCalendar的ForeColor和BackColor并不能真正改变MonthCalendar的字体和背景颜色。
二、问题重现
1. 启用Visual Style:在Vista中应用Vista主题,在Win7中应用Aero主题;
2. 在Visual Studio中创建Winforms工程;
3. 从工具箱中拖拽一个MonthCalendar到Form1上;
4. 打开属性窗口;
5. 在属性窗口中修改monthCalendar1的ForeColor和BackColor属性;
我们发现monthCalendar1的字体和背景颜色并没有随着ForeColor和BackColor的改变而改变。
三、问题分析
Winforms通过发送消息MCM_SETCOLOR来改变MonthCalendar的颜色。根据MSDN上MCM_SETCOLOR的说明,当启动了Visual Style之后,我们不能改变MonthCalendar的字体和背景颜色,因为Windows会根据系统设置选择合适的颜色进行绘制。