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

运行结果如下:

窗口重新设计:

重新运行:

窗口重新设计:

运行结果

C#应用程序界面开发进阶——高级窗体控件(5)——MonthCalender控件相关推荐

  1. C#应用程序界面开发进阶——高级窗体控件(1)——图形和图像类控件

    在C#的图形和图像类控件中,PictureBox是用于显示图像,而ImageList只是提供一个存储图像的集合,它本身并不显示 . 图像都是由Image类的对象进行设置的,其格式可以为.bmp..gi ...

  2. 小程序界面开发实现各种机型自适应

    小程序界面开发实现各种机型自适应 目录 小程序基本的机型大小 小程序自适应原理 这是我创建的demo 如何实现自适应 目录 小程序基本的机型大小 (320,568),(375,667),(414,73 ...

  3. C#应用程序界面开发基础——窗体控制(6)——菜单栏、工具栏和状态栏控件

    菜单栏.工具栏和状态栏控件 菜单栏描述了一个窗体的大致功能和风格.通过工具栏能够快速执行相应的功能,并且具有和菜单一样的功能,而状态栏常用于显示 一些状态信息. 1.菜单控件 菜单(MunuStrip ...

  4. C#应用程序界面开发基础——窗体控制(2)——MDI窗体

    MDI窗体 单文档界面(SDI) 多文档界面(MDI) MDI窗体的概念 MDI窗体(Multiple-Document Interface,多文档界面)用于同时显示多个文档. 在项目中使用MDI窗体 ...

  5. 跨平台.NET应用程序界面开发新亮点 - 增强的UI

    DevExpress XAF是一款强大的现代应用程序框架,允许同时开发ASP.NET和WinForms.DevExpress XAF采用模块化设计,开发人员可以选择内建模块,也可以自行创建,从而以更快 ...

  6. 微信小程序界面开发-界面跳转

    实现界面跳转不止一种方法,比如可以使用导航栏,而下面我将用另一种方式来实现,如果你想用导航栏实现可以参考导航栏 一.wxml代码 <view class="main-memu" ...

  7. MFC界面开发工具BCG v30.6 - 全新网格/报表控件

    BCGControlBar ("Business Components Gallery ControlBar")是MFC扩展库,使您可以创建具有完全自定义选项(功能区.可自定义工具 ...

  8. MFC界面开发进入BCGControlBar v30.5时代,Gauge控件全新升级

    亲爱的BCGSoft用户,我们非常高兴地宣布BCGControlBar Professional for MFC和BCGSuite for MFC v30.5正式发布!新版本包含针对基于功能区应用程序 ...

  9. 视频教程-微信小程序界面设计-样式入门到精通-微信开发

    微信小程序界面设计-样式入门到精通 04年进入计算机行业.拥有6年net和php项目开发经验,8年java项目开发经验. 现前端全栈工程师,主攻产品设计,微信开发等. 黄菊华 ¥66.00 立即订阅 ...

最新文章

  1. Android 水波效果 | 涟漪效果 实现
  2. 使用Ext.grid.Panel显示远程数据
  3. c语言中 数组 左移,如何将一个数组的元素循环左移?
  4. java if两个条件_java(3) if结构
  5. 无人驾驶汽车系统入门系列
  6. php判断手机浏览器,php 获取 手机浏览器的信息 | 学步园
  7. 二叉排序树查找不成功的平均查找长度
  8. java多线程生产者与消费者案例_多线程操作实例——生产者与消费者
  9. APP推广有效果,APP地推要以用户需求为核心
  10. silverlight安装后网页_纯干货收藏|两个技巧教你完美长截屏网页!
  11. 【数字信号去噪】基于matlab同心兰姆波模式分解【含Matlab源码 679期】
  12. 安川机器人io对照表_安川机器人IO信号对照表.pdf
  13. 有人给我留言要电源软件,于是就有了这篇软件合集
  14. Linux清理入侵痕迹
  15. 狐狸逮兔子——链式存储方式
  16. easypoi导入图片_EasyPOI—导出Excel图片问题
  17. Cadence 17.2( Allegro PCB ) 使用 Shape Symbol 制作不规则焊盘
  18. C#基于RealPlayX.ocx视频监控整合程序
  19. Window拷贝文件到Ubuntu虚拟机
  20. 阿里云磁盘异常爆满的原因及解决方法

热门文章

  1. c语言substr函数的优点,C/C++中substr函数的应用(简单讲解)详解
  2. 房东迟迟不签放行条 租客搬家整夜守行李/图
  3. 扇区与块(sectors,block)
  4. Python 学习之路: Matplotlib之设置隐藏坐标轴
  5. DataX系列3-TxtFileReader介绍
  6. @Target,@Retention,@Documented 注释的作用
  7. 从0到1:微信提现收费的背后
  8. Go编译原理系列3(词法分析)
  9. 大数据分析结果告诉你:如何打造“爆款”文章?
  10. golang gob