首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
【愚公系列】2023年11月 WPF控件专题 Line控件详解
2
【愚公系列】2023年11月 WPF控件专题 2023秋招WPF高频面试题
3
【愚公系列】2023年11月 Winform控件专题 Label控件详解
4
【愚公系列】2023年11月 Winform控件专题 Button控件详解
5
【愚公系列】2023年11月 Winform控件专题 Form控件详解
6
【愚公系列】2023年11月 Winform控件专题 TextBox控件详解
7
【愚公系列】2023年11月 Winform控件专题 CheckBox控件详解
8
【愚公系列】2023年11月 Winform控件专题 RadioButton控件详解
9
【愚公系列】2023年11月 Winform控件专题 ComboBox控件详解
10
【愚公系列】2023年11月 Winform控件专题 RichTextBox控件详解
11
【愚公系列】2023年11月 Winform控件专题 ListBox控件详解
12
【愚公系列】2023年11月 Winform控件专题 CheckedListBox控件详解
13
【愚公系列】2023年11月 Winform控件专题 numericUpDown控件详解
14
【愚公系列】2023年11月 Winform控件专题 LinkLabel控件详解
15
【愚公系列】2023年11月 Winform控件专题 DateTimePicker控件详解
16
【愚公系列】2023年11月 Winform控件专题 NotifyIcon控件详解
17
【愚公系列】2023年11月 Winform控件专题 ContextMenuStrip控件详解
18
【愚公系列】2023年11月 Winform控件专题 Timer控件详解
19
【愚公系列】2023年11月 Winform控件专题 PictureBox控件详解
20
【愚公系列】2023年11月 Winform控件专题 Chart控件详解
21
【愚公系列】2023年11月 Winform控件专题 DataGridView控件详解
22
【愚公系列】2023年11月 Winform控件专题 TableLayoutPanel控件详解
23
【愚公系列】2023年11月 Winform控件专题 ProgressBar控件详解
24
【愚公系列】2023年11月 Winform控件专题 Panel控件详解
25
【愚公系列】2023年11月 Winform控件专题 FlowLayoutPanel控件详解
26
【愚公系列】2023年11月 Winform控件专题 GroupBox控件详解
27
【愚公系列】2023年11月 Winform控件专题 SplitContainer控件详解
28
【愚公系列】2023年11月 Winform控件专题 TabControl控件详解
29
【愚公系列】2023年11月 Winform控件专题 ToolTip控件详解
30
【愚公系列】2023年11月 Winform控件专题 MaskedTextBox控件详解
31
【愚公系列】2023年11月 Winform控件专题 MonthCalendar控件详解
32
【愚公系列】2023年11月 Winform控件专题 TreeView控件详解
33
【愚公系列】2023年11月 Winform控件专题 MenuStrip控件详解
34
【愚公系列】2023年11月 Winform控件专题 OpenFileDialog控件详解
35
【愚公系列】2023年11月 Winform控件专题 SaveFileDialog控件详解
36
【愚公系列】2023年12月 Winform控件专题 FontDialog控件详解
37
【愚公系列】2023年12月 Winform控件专题 ColorDialog控件详解
38
【愚公系列】2023年12月 Winform控件专题 FolderBrowserDialog控件详解
39
【愚公系列】2023年12月 Winform控件专题 StatusStrip控件详解
40
【愚公系列】2023年12月 Winform控件专题 ToolStrip控件详解
41
【愚公系列】2023年12月 Winform控件专题 HelpProvider控件详解
42
【愚公系列】2023年12月 Winform控件专题 ToolStripContainer控件详解
43
【愚公系列】2023年12月 Winform控件专题 BackgroundWorker控件详解
44
【愚公系列】2023年12月 GDI+绘图专题 图形图像编程基础
45
【愚公系列】2023年12月 GDI+绘图专题 图形图像的重绘
46
【愚公系列】2023年12月 GDI+绘图专题 颜色获取和图形绘制
47
【愚公系列】2023年12月 GDI+绘图专题 Point
48
【愚公系列】2023年12月 GDI+绘图专题 Rectangle
49
【愚公系列】2023年12月 GDI+绘图专题 Matrix
50
【愚公系列】2023年12月 GDI+绘图专题 Pen

【愚公系列】2023年11月 Winform控件专题 MonthCalendar控件详解

🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。 🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。

🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。

🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

Winform控件是Windows Forms中的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、进度条等。开发人员可以使用Winform控件来构建用户界面并响应用户的操作行为,从而创建功能强大的桌面应用程序。

🚀一、MonthCalendar控件详解

MonthCalendar控件是Windows Forms中的一个日期选择控件,可以用来方便地选择日期和时间。下面是一些关于MonthCalendar控件的常见用法:

  1. 在设计窗口中添加MonthCalendar控件。
  2. 设置控件的日期范围。可以通过设置MinDate和MaxDate属性来限制日期的选择范围。
  3. 可以使用SelectionRange属性设置已选日期范围,或者使用SelectionStart和SelectionEnd属性分别设置已选日期的开始和结束日期。
  4. MonthCalendar控件还提供了多种事件,例如DateChanged、DateSelected等,可以通过处理这些事件来执行一些特定操作。

例如,下面是一个演示如何使用MonthCalendar控件的示例代码:

代码语言:c#
复制
private void Form1_Load(object sender, EventArgs e)
{
    // 设置日期范围
    monthCalendar1.MinDate = new DateTime(2021, 1, 1);
    monthCalendar1.MaxDate = new DateTime(2021, 12, 31);

    // 设置已选日期范围
    monthCalendar1.SelectionRange = new SelectionRange(new DateTime(2021, 6, 1), new DateTime(2021, 6, 30));
}

private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
{
    // 处理日期选择事件
    MessageBox.Show("您选择的日期是:" + e.Start.ToShortDateString());
}
在这里插入图片描述

🔎1.属性介绍

🦋1.1 AnnuallyBoldedDates

AnnuallyBoldedDates属性可以用来设置每年要加粗显示的日期集合,以便在MonthCalendar控件的日历中突出显示这些日期。

使用AnnuallyBoldedDates属性需要按照以下步骤进行设置:

  1. 创建一个DateTime数组,用于保存要加粗显示的日期。数组的元素可以是任意日期。
  2. 通过MonthCalendar控件的AnnuallyBoldedDates属性,将日期数组设置为要加粗显示的日期集合。

下面是一个演示如何使用AnnuallyBoldedDates属性的示例代码:

代码语言:c#
复制
private void Form1_Load(object sender, EventArgs e)
{
    // 设置要加粗显示的日期集合
    DateTime[] dates = new DateTime[] 
    {
        new DateTime(2021, 1, 1),
        new DateTime(2021, 4, 4),
        new DateTime(2021, 5, 1),
        new DateTime(2021, 10, 1),
        new DateTime(2021, 12, 25)
    };
    monthCalendar1.AnnuallyBoldedDates = dates;
}
在这里插入图片描述

在上述示例代码中,我们创建了一个包含5个日期的DateTime数组,这些日期分别为:2021年1月1日、4月4日、5月1日、10月1日和12月25日。我们然后将这个日期数组设置为MonthCalendar控件的AnnuallyBoldedDates属性值,以便在MonthCalendar控件中突出显示这些日期。

🦋1.2 BoldedDates

BoldedDates属性可以用于设置在日历中应该被加粗显示的日期。以下是使用该属性的步骤:

  1. 在设计模式下,双击MonthCalendar控件以打开属性窗口。
  2. 在属性窗口中,找到BoldedDates属性并单击它,然后单击其右侧的“…”按钮以打开“日期选择器”窗口。
  3. 在“日期选择器”窗口中,选择要加粗显示的日期,并单击“加粗”按钮。您可以选择多个日期。
  4. 单击“确定”按钮关闭“日期选择器”窗口。
  5. 保存并运行应用程序,您将会看到所选日期已经被加粗显示。

以下是一些示例代码,用于在代码中设置BoldedDates属性:

代码语言:c#
复制
DateTime[] boldedDates = { new DateTime(2021, 1, 1), new DateTime(2021, 12, 25) };
monthCalendar1.BoldedDates = boldedDates;
在这里插入图片描述

此代码将月历控件中1月1日和12月25日加粗显示。

🦋1.3 CalendarDimensions

CalendarDimensions属性用于设置月历的行数和列数。

默认情况下,MonthCalendar控件的行数为1,列数为1。但是,如果需要显示多个月份,则需要设置CalendarDimensions属性。

以下是设置CalendarDimensions属性的示例:

代码语言:c#
复制
// 设置MonthCalendar控件的行数为2,列数为2
this.monthCalendar1.CalendarDimensions = new System.Drawing.Size(1, 2);
在这里插入图片描述

上述代码将MonthCalendar控件的行数设置为1,列数设置为2,因此该控件将显示2个月份。

🦋1.4 FirstDayOfWeek

MonthCalendar控件的FirstDayOfWeek属性用于设置每周的第一天是哪一天。默认情况下,该属性的值为System.Windows.Forms.Day.Default。可以将其设置为以下值之一:

  • DayOfWeek.Sunday:将每周的第一天设置为周日。
  • DayOfWeek.Monday:将每周的第一天设置为周一。
  • DayOfWeek.Tuesday:将每周的第一天设置为周二。
  • DayOfWeek.Wednesday:将每周的第一天设置为周三。
  • DayOfWeek.Thursday:将每周的第一天设置为周四。
  • DayOfWeek.Friday:将每周的第一天设置为周五。
  • DayOfWeek.Saturday:将每周的第一天设置为周六。

例如,如果要将每周的第一天设置为周一,则可以在代码中使用以下代码:

代码语言:c#
复制
monthCalendar1.FirstDayOfWeek=(Day)DayOfWeek.Monday;
在这里插入图片描述

🦋1.5 MaxSelectionCount

MaxSelectionCount属性是MonthCalendar控件中的一个可选属性,它用于设置用户可以选择的最大日期范围。

默认情况下,MaxSelectionCount属性的值为7,这意味着用户最多只能选择连续的7个日期。如果需要更大的选择范围,可以将此属性设置为更大的数字。

下面是一个示例演示如何设置MaxSelectionCount属性,以限制用户选择的日期数量为5天:

代码语言:c#
复制
private void Form1_Load(object sender, EventArgs e)
{
    monthCalendar1.MaxSelectionCount = 5;
}
在这里插入图片描述

在上述示例中,我们在窗体加载事件中将MonthCalendar控件的MaxSelectionCount属性设置为5。这将限制用户最多选择5个日期。

🦋1.6 MonthlyBoldedDates

MonthlyBoldedDates属性是该控件的一个属性,用于设置每个月中加粗显示的日期。

使用方法:

  1. 首先在Winform窗体设计视图中拖拽MonthCalendar控件至窗体中。
  2. 在代码中通过MonthlyBoldedDates属性设置每个月中要加粗显示的日期。该属性是一个DateTime类型的数组,每个数组元素表示一个要加粗显示的日期。

代码示例:

代码语言:c#
复制
// 设置2021年1月1日和1月15日为每个月中要加粗显示的日期
DateTime[] boldedDates = { new DateTime(2021, 1, 1), new DateTime(2021, 1, 15) };
monthCalendar1.MonthlyBoldedDates = boldedDates;
  1. 运行程序即可看到每个月中指定的日期被加粗显示。

注意事项:

  • 由于该属性是一个数组,如果设置的日期超出了月历控件能够显示的日期范围,会抛出ArgumentOutOfRangeException异常。
  • 如果要清除之前设置的加粗日期,可以将该属性设置为一个空数组。🦋1.7 ScrollChange

ScrollChange属性指的是当用户使用鼠标或键盘滚动月历时是否会触发Scroll事件。默认情况下,ScrollChange属性为true,即滚动月历时会触发Scroll事件。

如果你希望在用户滚动月历时不触发Scroll事件,可以将ScrollChange属性设置为false。这样,只有在用户通过点击月历上的导航按钮或在代码中调用Scroll方法时,才会触发Scroll事件。

使用ScrollChange属性可以控制MonthCalendar控件的滚动行为,使其更符合用户的预期。

🦋1.8 SelectionRange

SelectionRange属性是一个MonthCalendarSelectionRange类型的属性,用于获取和设置MonthCalendar控件中所选日期的范围。

使用SelectionRange属性,你可以设置MonthCalendar控件中的多个日期范围。这样,用户可以选择多个日期范围,而不仅仅是一个日期。

下面是一个使用SelectionRange属性的示例:

代码语言:c#
复制
private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
{
    // 获取所选日期范围
    SelectionRange range = monthCalendar1.SelectionRange;
    
    // 输出所选日期范围的开始日期和结束日期
    MessageBox.Show(string.Format("Start Date: {0}\nEnd Date: {1}", range.Start.ToShortDateString(), range.End.ToShortDateString()));
}
在这里插入图片描述

在这个示例中,当用户选择一个日期范围时,事件处理程序monthCalendar1_DateSelected会触发。在事件处理程序中,我们获取所选日期范围,并使用MessageBox.Show方法输出所选日期范围的开始日期和结束日期。

注意:如果你要设置SelectionRange属性,请确保所设置的日期范围是有效的,即开始日期应该早于或等于结束日期。

🦋1.9 ShowToday、ShowTodayCircle、ShowWeekNumbers

MonthCalendar控件有多个属性,其中包括ShowToday、ShowTodayCircle和ShowWeekNumbers属性。

ShowToday属性用于指定是否在日历控件中显示“今天”按钮。当ShowToday属性为True时,将在控件的底部显示“今天”按钮。用户可以单击此按钮以选择当前日期。

ShowTodayCircle属性用于指定是否在当前日期下方显示圆圈。当ShowTodayCircle属性为True时,将在当前日期下方显示一个圆圈。为了更好的可读性,显示当前日期的文本也会变成加粗。

ShowWeekNumbers属性用于指定是否在控件中显示周号。当ShowWeekNumbers属性为True时,在日历的左侧将显示周数。

使用这些属性可以使MonthCalendar控件更加易用和可读,提高用户体验。

在这里插入图片描述

🦋1.10 TitleBackColor、TitleForeColor

TitleBackColor和TitleForeColor属性用于设置控件的标题背景色和前景色。

TitleBackColor属性用于设置控件标题的背景色。它的默认值是SystemColors.ActiveCaption,可以通过设置它的值来改变控件标题的背景色。例如,以下代码将MonthCalendar控件的标题背景色设置为红色:

代码语言:c#
复制
monthCalendar1.TitleBackColor = Color.Red;

TitleForeColor属性用于设置控件标题的前景色。它的默认值是SystemColors.ActiveCaptionText,可以通过设置它的值来改变控件标题的前景色。例如,以下代码将MonthCalendar控件的标题前景色设置为白色:

代码语言:c#
复制
monthCalendar1.TitleForeColor = Color.White;

需要注意的是,这两个属性只适用于整个控件的标题,而不是每个月份区域的标题。如果需要改变每个月份区域的标题背景色和前景色,需要通过自定义绘制来实现。该属性生效的前提是注释Program.cs类中的Application.EnableVisualStyles();

🦋1.11 TodayDate

TodayDate属性用于设置或获取当前日期。

通过设置TodayDate属性,可以将日历中显示的当前日期改变为指定的日期。例如:

代码语言:c#
复制
// 设置TodayDate为当前日期
monthCalendar1.TodayDate = DateTime.Now;

// 设置TodayDate为2022年10月1日
monthCalendar1.TodayDate = new DateTime(2022, 10, 1);
在这里插入图片描述

除了设置TodayDate属性外,还可以使用SelectionRange属性设置选择范围,通过设置MinDate和MaxDate属性限制可选日期的范围等等。

🦋1.12 TrailingForeColor

TrailingForeColor属性用于设置日历控件中剩余的日期的前景色,即不是当前月份的日期的颜色。可以使用以下方法设置TrailingForeColor属性:

  1. 在设计时,选择MonthCalendar控件,然后在属性窗口中选择TrailingForeColor属性,并设置前景色。
  2. 在代码中,使用以下语句设置TrailingForeColor属性:
代码语言:c#
复制

monthCalendar1.TrailingForeColor = Color.Gray;

代码语言:txt
复制

其中,monthCalendar1是MonthCalendar控件的名称,Color.Gray表示设置为灰色。

注意:TrailingForeColor属性只适用于在ShowWeekNumbers属性为True时显示的星期数字。该属性生效的前提是注释Program.cs类中的Application.EnableVisualStyles();

🔎2.常用场景

MonthCalendar控件是Winform中常用的日期选择控件,常用的场景包括:

  1. 计划安排:用户可以使用MonthCalendar选择特定的日期进行计划安排,例如安排会议、约会等。
  2. 日程管理:用户可以使用MonthCalendar选择日期并添加日程信息,例如添加待办事项、提醒等。
  3. 日期选择:用户可以使用MonthCalendar选择日期进行查询或筛选,例如查询某个时间段内的数据。
  4. 生日提醒:在生日或周年纪念日等特殊日期时,可以使用MonthCalendar提醒用户。
  5. 酒店预订:酒店预订系统中,用户可以使用MonthCalendar选择入住和离店日期。

🔎3.具体案例

以下是一个Winform中使用MonthCalendar控件的完整案例,演示了如何使用MonthCalendar控件来选择日期并将所选日期显示在Label控件中:

  1. 创建一个新的Winform项目,在窗体上添加一个MonthCalendar控件和一个Label控件。
  2. 在MonthCalendar控件的属性窗口中,设置以下属性:TodayDate为当天日期,ShowToday为true,MaxSelectionCount为1。
  3. 在窗体的代码文件中,编写以下代码:
代码语言:c#
复制
private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
{
    label1.Text = monthCalendar1.SelectionRange.Start.ToShortDateString();
}
  1. 在窗体的设计视图中,双击MonthCalendar控件,会自动生成一个DateSelected事件的处理程序。在处理程序中,将所选日期的文本格式设置为Label控件的文本。
  2. 运行程序,选择任意一个日期,所选日期的文本将会显示在Label控件中。

完整代码如下:

代码语言:c#
复制
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        monthCalendar1.TodayDate = DateTime.Today;
        monthCalendar1.ShowToday = true;
        monthCalendar1.MaxSelectionCount = 1;
    }

    private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
    {
        label1.Text = monthCalendar1.SelectionRange.Start.ToShortDateString();
    }
}
在这里插入图片描述

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

下一篇
举报
领券