转载:http://www.cnblogs.com/TrueElement/archive/2012/01/11/2319991.html 感谢原作者。

写个小应用,主要是方便选中日期到datagridview,就想到利用MonthCalendar显示一个月历,然后利用鼠标点击选择。实现的方法主要是利用了mousedown事件以及MonthCalendar的HitTest()方法。

说说HitTest() 方法先,这个方法返回MonthCalendar ..::. HitTestInfo 类型,这种类型里面包含3种属性:HitArea、Point、Time。其中HitArea是一个枚举,包含

成员名称 说明
Nowhere 指定点或者不在月历控件上,或者在控件的非活动部分。
TitleBackground 指定点在月标题的背景上。
TitleMonth 指定点在月标题栏中的月名称上。
TitleYear 指定点在年值上月的标题栏中。
NextMonthButton 指定点在控件右上角的按钮上。如果用户单击此处,则月历将其显示滚动到下一个月或下一组月。
PrevMonthButton 指定点在控件左上角的按钮上。如果用户单击此处,则月历将其显示滚动到上一个月或上一组月。
CalendarBackground 指定点是日历的背景的组成部分。
Date 指定点在日历中的某一日期上。MonthCalendar ..::. HitTestInfo 的 Time 属性设置为指定点处的日期。
NextMonthDate 指定点在下一个月(部分显示在当前所显示月份的顶部)的某个日期上。如果用户单击此处,则月历将其显示滚动到下一个月或下一组月。
PrevMonthDate 指定点在前一个月(部分显示在当前所显示月份的顶部)中的某个日期上。如果用户单击此处,则月历将其显示滚动到上一个月或上一组月。
DayOfWeek 指定点在日期缩写(例如,“Fri”)上。MonthCalendar ..::. HitTestInfo 的 Time 属性设置为 0001 年 1 月 1 日。
WeekNumbers 指定点在周数上。只有在启用了 MonthCalendar 的 ShowWeekNumbers 属性时,这才会发生。 MonthCalendar ..::. HitTestInfo 的 Time 属性设置为最左侧的列中对应的日期。
TodayLink 指定点在月历控件底端的今日链接上。

例如:

tmp.HitTest(e.Location)
{System.Windows.Forms.MonthCalendar.HitTestInfo}HitArea: DatePoint: {X = 136 Y = 97}Time: {2012/7/1 0:00:00}

而当连续点击到TitleBackground(上面的 “2012年1月”那个区域)时,月历会变成如下:

0次 1次 2次 3次

所以,根据这些情况,写了以下一个mousedown事件处理方法:

        private byte haveHitTitleCnt = 0;//标题栏点击计数
        private void monthCalendar1_MouseDown(object sender, MouseEventArgs e){MonthCalendar tmp = (MonthCalendar)sender;MonthCalendar.HitTestInfo hitInfo = tmp.HitTest(e.Location);if (hitInfo.HitArea == MonthCalendar.HitArea.Date){if (haveHitTitleCnt == 0){this.dataGridView1.Rows.Add(this.monthCalendar1.SelectionStart.Date.ToShortDateString(), true, false);}else{haveHitTitleCnt--;}}if (hitInfo.HitArea == MonthCalendar.HitArea.TitleBackground){if (haveHitTitleCnt < 3)//最大到3
                {haveHitTitleCnt++;}}}

还有,为了完整一些,将

        this.monthCalendar1.MaxSelectionCount = 1;

点击其他部分,像TodayLink,不会引起date部分haveHitTitleCnt变化(即date显示层次(年、月、日)变化),所以就不用处理这些地方了。

MonthCalendar的mousedown方法选择日期相关推荐

  1. python选择日期控件_selenium + python 定位日期控件(处理iframe)两种方法

    对于日期控件的处理用了两个办法. 1.由于日期控件输入框是只读属性的如 其中readonly的意思就是只读.所以方法1就是调用js把这个只读属性删了,之后在send_keys值进去如例: js = ' ...

  2. 多选月份的日期选择器_GitHub - ylmyg/SelectionTime: Android下日期选择器,支持范围选择、多选、单选、根据输入天数选择日期...

    SelectionTime(1.0.1) SelectionTime是用于Android设备上选择日期开源库,高度订制,打造适合自己的日期控件 效果图(多选.范围选.单选) 安装说明 Gradle: ...

  3. WdatePicker日期控件使用与值获取,以及选择日期完毕触发事件

    HTML: <!--引入WdaePicker文件--> <script type="test/javascript" scr="datePicker/W ...

  4. uniapp 日期选择器_uniapp实现横向滚动选择日期

    本文实例为大家分享了uniapp实现横向滚动选择日期的具体代码,供大家参考,具体内容如下 1.方法封装 common.js //获取当前时间,格式YYYY-MM-DD HH:MM:SS const G ...

  5. python选择日期控件_Python3 自己写了个DateCtrl日期控件 | 学步园

    我想在Python中找个像是VC中CDateTimeCtrl控件一样选择日期的控件没找着,谁知到告诉我啊 后来我自己写了一个,代码如下: --------------------------DateC ...

  6. DatePicker选择日期报错clone.weekday is not a function

    form.setFieldsValue设置默认值 之后去选择日期 报错clone.weekday is not a function 解决方法: import weekday from "d ...

  7. 关于element-ui使用el-date-picker清除选择日期后参数为null以及选择日期无法显示的问题

    选择日期无法显示的问题 //template中的代码 <el-date-pickerv-model="queryParams.start_end_time"type=&quo ...

  8. jQuery实现移动端手机选择日期日历插件

    效果图 calendar.css html, body {color: #333;margin: 0;height: 100%;font-family: "Microsoft YaHei&q ...

  9. Qt dateEdit 选择日期控件

    课设要求图形化界面,使用 Qt Designer 设计了UI,PyQt5转为.py文件,并在此基础上进行了一些UI方面改进.笔记一则. 控件UI设计 初始需求就是设计一个能够输入日期的控件.确定为组件 ...

  10. vue+elementUI日期选择器实现选择日期,自动对应周几,并且是包含所选择日期的一周的日期

    vue+elementUI日期选择器实现选择日期,自动对应周几 之前在公司的项目里面遇到这个问题,如今想起来在这里总结一下,如果有更好的方法,请各位大神多多指教. 在template里面给选择日期的e ...

最新文章

  1. centos 多个yum源,系统怎么选择
  2. dirname(__FILE__) 介绍
  3. 解决导入的maven聚合工程中子模块项目不显示
  4. 代码检查规则:Python语言案例详解
  5. 论ORM框架—EntityFrameworkCore
  6. [bzoj1925][Sdoi2010]地精部落
  7. Async/Await异步
  8. VMware ESXI 5.0群集+ISCSI存储
  9. L2-010 排座位 (并查集)
  10. Xcode 11.7(12.4)/13.2的signing和sandbox配置截图对比
  11. 《批创思维导论》网课章节测验及答案
  12. 写个爬虫,爬图片,mzitu
  13. 2019全国大学生电子设计竞赛备赛笔记--风力摆--板球--模拟曲射电磁炮
  14. goahead(嵌入式Web服务器)之asp、goform篇
  15. 实型变量的定义和应用
  16. 运营商线路细分_国内三大运营商宽带线路及分级介绍
  17. Windows10系统封装
  18. 软件外包交易平台排行
  19. 设计模式的艺术——软件开发人员内功修炼之道 重磅来袭
  20. ubuntu 系统磁盘清理

热门文章

  1. linux内核audit,linux audit审计(7)--读懂audit日志
  2. zh-cn 和zh的意思
  3. Knowledge Tracing: A Survey阅读笔记
  4. 解决:Android中常见的热门标签的流式布局flowlayout不能wrap_content
  5. 游戏模型(3A)和影视模型(cg)的区别以及发展前景?
  6. 手把手教你从零开始腾讯云服务器部署
  7. 机器视觉技术的尺寸测量
  8. 基于RNN实现搜狐新闻数据文本分类
  9. vsCode的使用过程中遇到的问题?
  10. YOLO5Face:为什么要重新发明人脸检测器