MonthCalendar控件用来查看和设置日期信息。它是一个可视化网络图形界面,风格内包含月份的编号日期,这些日期排列在周一至周日下方的七个列中。用户可以单击月份标题任何一侧的箭头按钮来选择不同的月份。该控件还有一个更强的功能,就是可以选择日期范围。
更改MonthCalender控件的外观
MonthCalender控件允许多种方法自定义月历的外观。
1、以粗体显示特定日期
在属性面板中,MonthCalendar控件主要通过以下三个属性设置成粗体的形式,显示特殊的日期或重复出现的日子。
(1)BoldedDates属性:以粗体显示当前设置的日期。
(2)AnnuallyBoldedDates属性:每年都以粗体显示设置的日期。
(3)MonthlyBoldedDates属性:每月都以粗体显示设置的日期。
编写程序,将2018年12月20日在网格中以粗体显示。
在Form1窗体中,添加MonthCalendar控件
发生Form1_Load事件
编写代码之后:
完整代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//实例化DateTime类,使其值为2022年7月20日
DateTime myBirthday = new DateTime(2022, 7, 20);
//使用AddBoldedDate方法在月历中将20以粗体显示
monthCalendar1.AddBoldedDate(myBirthday);
//调用UpdateBoldedDates方法重绘粗体格式的日期
monthCalendar1.UpdateBoldedDates();
}
}
}
创建一个DateTime对象,在这个对象中指定需要以粗体显示的日期
使用AddBoldedDate方法在月历中添加以粗体显示的日期
调用UpdateBoldedDates方法重绘粗体格式的日期。
运行结果如下:
2、更改月历配色方案
MonthCalender控件主要通过以下属性来更改月历控件的配色方案。
(1)BackColor属性:月份中显示的背景颜色 。
(2)ForeColor属性:用于显示月份中文本的颜色 。
(3)TitleBackColor属性:日历标题中显示的背景色。
(4)TitleForeColor属性:用于显示日历中标题文本的颜色 。
(5)TrailingForeColor属性:用于显示在月历上出现的上一个月和下一个月的颜色
还可以使用该控件的ShowToday和ShowTodayCircle属性来判断是否在控件底部显示今天日期和确定是否在今天这一日期上加圆圈。
3、显示周数
将ShowWeekNumbers属性设置为True,用于确定是否在每行日期的左侧显示周数。
在MonthCalender控件中显示多个月份
MonthCalender控件可显示多个月份,最多可同时显示十二个月。默认情况下,控件只显示一个月,用户可通过CalenderDimensions属性来设置要显示的月份个数。在设置或更改月历尺寸时,控件的大小也会随之改变,因此应确保窗体上有足够的空间供新尺寸使用。
在属性面板中,设置CalendarDimensions属性,使控件在水平和垂直方向都显示两个月份。
在MonthCalender控件中选择日期范围
MonthCalender控件的MaxDate属性和MinDate属性分别用来设置选择的最大日期和最小日期。
注意:如何在代码中设置日期范围,则MaxDate属性和MiniDate属性的值都为DateTime对象。
可以通过SelectionStart和SelectionEnd属性进行设置。这两个属性分别用于设置日期的开始和结束。
编写程序,设置月历的开始日期和结束日期。
在Form1窗体中,首先添加MonthCalender控件
两个Label控件,Text属性改为“起始日期:”和“结束日期:”。
两个TextBox控件
创建DateChanged事件:
双击之后:
代码之前:
输入代码之后:
完整代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
//通过SelectionStart属性获取用户选择的起始日期
textBox1.Text=monthCalendar1.SelectionStart.ToString();
//通过SelectionEnd属性获取用户选择的结束日期
textBox2.Text=monthCalendar1.SelectionEnd.ToString();
}
}
}
运行结果如下:
窗口重新设计:
重新运行:
窗口重新设计:
运行结果