MonthCalendar的mousedown方法选择日期
转载: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方法选择日期相关推荐
- python选择日期控件_selenium + python 定位日期控件(处理iframe)两种方法
对于日期控件的处理用了两个办法. 1.由于日期控件输入框是只读属性的如 其中readonly的意思就是只读.所以方法1就是调用js把这个只读属性删了,之后在send_keys值进去如例: js = ' ...
- 多选月份的日期选择器_GitHub - ylmyg/SelectionTime: Android下日期选择器,支持范围选择、多选、单选、根据输入天数选择日期...
SelectionTime(1.0.1) SelectionTime是用于Android设备上选择日期开源库,高度订制,打造适合自己的日期控件 效果图(多选.范围选.单选) 安装说明 Gradle: ...
- WdatePicker日期控件使用与值获取,以及选择日期完毕触发事件
HTML: <!--引入WdaePicker文件--> <script type="test/javascript" scr="datePicker/W ...
- uniapp 日期选择器_uniapp实现横向滚动选择日期
本文实例为大家分享了uniapp实现横向滚动选择日期的具体代码,供大家参考,具体内容如下 1.方法封装 common.js //获取当前时间,格式YYYY-MM-DD HH:MM:SS const G ...
- python选择日期控件_Python3 自己写了个DateCtrl日期控件 | 学步园
我想在Python中找个像是VC中CDateTimeCtrl控件一样选择日期的控件没找着,谁知到告诉我啊 后来我自己写了一个,代码如下: --------------------------DateC ...
- DatePicker选择日期报错clone.weekday is not a function
form.setFieldsValue设置默认值 之后去选择日期 报错clone.weekday is not a function 解决方法: import weekday from "d ...
- 关于element-ui使用el-date-picker清除选择日期后参数为null以及选择日期无法显示的问题
选择日期无法显示的问题 //template中的代码 <el-date-pickerv-model="queryParams.start_end_time"type=&quo ...
- jQuery实现移动端手机选择日期日历插件
效果图 calendar.css html, body {color: #333;margin: 0;height: 100%;font-family: "Microsoft YaHei&q ...
- Qt dateEdit 选择日期控件
课设要求图形化界面,使用 Qt Designer 设计了UI,PyQt5转为.py文件,并在此基础上进行了一些UI方面改进.笔记一则. 控件UI设计 初始需求就是设计一个能够输入日期的控件.确定为组件 ...
- vue+elementUI日期选择器实现选择日期,自动对应周几,并且是包含所选择日期的一周的日期
vue+elementUI日期选择器实现选择日期,自动对应周几 之前在公司的项目里面遇到这个问题,如今想起来在这里总结一下,如果有更好的方法,请各位大神多多指教. 在template里面给选择日期的e ...
最新文章
- centos 多个yum源,系统怎么选择
- dirname(__FILE__) 介绍
- 解决导入的maven聚合工程中子模块项目不显示
- 代码检查规则:Python语言案例详解
- 论ORM框架—EntityFrameworkCore
- [bzoj1925][Sdoi2010]地精部落
- Async/Await异步
- VMware ESXI 5.0群集+ISCSI存储
- L2-010 排座位 (并查集)
- Xcode 11.7(12.4)/13.2的signing和sandbox配置截图对比
- 《批创思维导论》网课章节测验及答案
- 写个爬虫,爬图片,mzitu
- 2019全国大学生电子设计竞赛备赛笔记--风力摆--板球--模拟曲射电磁炮
- goahead(嵌入式Web服务器)之asp、goform篇
- 实型变量的定义和应用
- 运营商线路细分_国内三大运营商宽带线路及分级介绍
- Windows10系统封装
- 软件外包交易平台排行
- 设计模式的艺术——软件开发人员内功修炼之道 重磅来袭
- ubuntu 系统磁盘清理