资料来源 http://www.cnblogs.com/TrueElement/archive/2012/01/11/2319991.html

        private void monthCalendar_MouseDown(object sender, MouseEventArgs e){MonthCalendar.HitTestInfo hitInfo = monthCalendar.HitTest(e.Location);if (hitInfo.HitArea == MonthCalendar.HitArea.Date)//当选择了日期后
            {txtCalendar.Text = monthCalendar.SelectionStart.ToString("yyyy-MM-dd");}}

详细说明

实现的方法主要是利用了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: Date    Point: {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显示层次(年、月、日)变化),所以就不用处理这些地方了。

资料来源 http://www.cnblogs.com/TrueElement/archive/2012/01/11/2319991.html

转载于:https://www.cnblogs.com/IT-Bear/archive/2013/01/23/2872504.html

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

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

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

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

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

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

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

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

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

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

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

  6. 多因素分析模型解决方法_选择模型方法的8个决定因素

    多因素分析模型解决方法 Finally, all data were cleansed and ready to analyze. Andy started overenthusiastically ...

  7. 软件测试 通用技术03 测试用例 黑盒测试用例设计方法 等价类划分法 边界值分析法 判定表法 场景法 功能图法 其他用例设计方法 用例设计方法综合选择

    文章目录 1 测试用例 1.1 测试用例的定义 1.2 测试用例模板 1.3 测试用例模板的内容 测试用例编号 测试项 依赖用例 测试步骤 测试数据 预期结果 测试结果 测试人 备注 2 测试用例编写 ...

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

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

  9. 黑盒测试用例设计方法三(正交实验法、功能图法、用例设计方法综合选择)

    测试步骤 一.正交实验法 1.1正交实验法介绍 1.2正交实验法实现步骤 1.3实际案例 二.功能图法 2.1功能图法原理介绍 2.2功能图法实现步骤 2.3实践案例 三.其他用例设计方法 3.1测试 ...

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

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

最新文章

  1. 北方工业大学计算机科学与技术复试分数线,北方工业大学复试分数线
  2. 类成员初始化顺序php,PHP-php类成员变量初始化的问题?
  3. 卷积神经网络只是一种全连接神经网络的特殊情况
  4. linux执行jar包命令没有主清单熟悉,jar命令成功完成 java -jar 命令却提示“没有主清单属性”!...
  5. Python中将array类型不按科学计数法存在文件中的方法
  6. 实体零售全渠道及数字化发展报告(2020)
  7. 上传及更新代码到github(以及如何在vscode上提交自己的代码)
  8. php中的strncmp,PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
  9. 弱监督深度学习图像分割综述
  10. 获取页面iframe里的元素
  11. DM9000驱动之接受
  12. 35款提升工作效率的工具软件
  13. MongoDB应用场景及选型(海量数据存储选型)
  14. android 蒙版图片带拖动_使用jQuery draggable在div剪切蒙版中拖动缩放图像?
  15. 风变编程python课_聊一聊风变编程Python线上课程
  16. cesium等高线_Cesium专栏-空间分析之地形等高线(附源码下载)
  17. webrtc 中的scoped_refptr
  18. python生词本查单词译文_GitHub - To-knowledge/Wudao-dict: 有道词典的命令行版本,支持英汉互查和在线查询。...
  19. python函数介绍(20804字的带图超详细说明)
  20. 线程池 ExecutorService 的使用例子

热门文章

  1. 程序江湖:第二章 初生牛犊不怕虎
  2. win10注册表的备份与恢复;对“未将所有数据都成功写入到注册表中。某些项是由系统或其他进程打开的,或者你没有足够的权限执行此操作”问题的理解
  3. 区块链在保险业的应用
  4. 博客园app for xamarin android
  5. 爱荷华州立大学计算机专业,爱荷华州立大学计算机博士专业课程设置情况
  6. windows11 笔记本开启热点就断网
  7. 百度地图、高德地图的数据从哪里得到的?
  8. 万网域名注册促销活动 - 阿里云域名优惠口令免费获取
  9. epub编辑器apk_使用您喜欢HTML编辑器编辑ePub电子书
  10. 史玉柱自述:我是怎么带队伍的