C# WinForm开发系列之DataTimePicker控件显示月份的限制和关于DataTimePicker和monthCalendar的样式设置问题

一.首先,在创建的窗体拖入一个dateTimePicker控件,如图1所示:


图1

在Form3窗体加入如下代码控制月份的显示(本例为只显示本月和下个月份时间):

  private void Form3_Load(object sender, EventArgs e)
  {
          this.dateTimePicker1.Value = DateTime.Today; 
            //取得本月第一天日期時間
          DateTime dtimeMin = DateTime.Parse(DateTime.Now.ToString("yyyy/MM/01 00:00:00"));
            
          //取下个月最后一天日期时间
          DateTime dtimeMax = DateTime.Parse(DateTime.Today.ToString("yyyy/MM/0123:59:59")).AddDays(-1).AddMonths(2);

          //設定可選擇的日期上限
          this.dateTimePicker1.MinDate = dtimeMin;

          //設定預設顯示的日期下限
          this.dateTimePicker1.MaxDate = dtimeMax;
  }

运行效果如图2,3所示:


图2


图3


二.在使用DateTimePicker和MonthCalendar这两个控件的时候,发现无论如何设置控件的各种颜色均不起作用,无论是在Property窗口里设置

还是代码中设置,如图4所示:


图4


图5

代码设置如:

  //设置控件的TitleBackColor属性,使控件的标题背景为蓝色
  monthCalendar1.TitleBackColor = System.Drawing.Color.Blue;
  //设置控件的TrailingForeColor属性,使控件其他日期的颜色为红色
  monthCalendar1.TrailingForeColor = System.Drawing.Color.Red;
  //设置控件的TitleForeColor属性,使标题上的文字为黄色
  monthCalendar1.TitleForeColor = System.Drawing.Color.Yellow;

窗口设置如图6所示:

  //设置控件的TitleBackColor属性,使控件的标题背景为蓝色
  monthCalendar1.TitleBackColor = System.Drawing.Color.Blue;
  //设置控件的TrailingForeColor属性,使控件其他日期的颜色为红色
  monthCalendar1.TrailingForeColor = System.Drawing.Color.Red;
  //设置控件的TitleForeColor属性,使标题上的文字为黄色
  monthCalendar1.TitleForeColor = System.Drawing.Color.Yellow;


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

解决方法:如果通过Program.CS中将Application.EnableVisualStyles()注释掉的话,就可以改变颜色了,但那会很丑陋的

注释下一行代码就可以了: 

//Application.EnableVisualStyles();

效果如图7所示:


图7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值