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

举报
愚公搬代码 发表于 2023/11/26 23:25:24 2023/11/26
【摘要】 🏆 作者简介,愚公搬代码🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物...

🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,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控件的示例代码:

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属性的示例代码:

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属性:

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属性的示例:

// 设置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:将每周的第一天设置为周六。

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

monthCalendar1.FirstDayOfWeek=(Day)DayOfWeek.Monday;

在这里插入图片描述

🦋1.5 MaxSelectionCount

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

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

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

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类型的数组,每个数组元素表示一个要加粗显示的日期。

代码示例:

// 设置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属性的示例:

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控件的标题背景色设置为红色:

monthCalendar1.TitleBackColor = Color.Red;

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

monthCalendar1.TitleForeColor = Color.White;

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

🦋1.11 TodayDate

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

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

// 设置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属性:

    monthCalendar1.TrailingForeColor = Color.Gray;
    

    其中,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. 在窗体的代码文件中,编写以下代码:

private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
{
    label1.Text = monthCalendar1.SelectionRange.Start.ToShortDateString();
}
  1. 在窗体的设计视图中,双击MonthCalendar控件,会自动生成一个DateSelected事件的处理程序。在处理程序中,将所选日期的文本格式设置为Label控件的文本。

  2. 运行程序,选择任意一个日期,所选日期的文本将会显示在Label控件中。

完整代码如下:

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();
    }
}

在这里插入图片描述


🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

![在这里插入图片描述](https://img-blog.csdnimg.cn/e06a317e89694a23ad89d2c59538c3a1.jpeg#pic_center =450x300)

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。