重写DEV的DateEdit控件的类只选择年月
2015-08-25 14:28
495 查看
最新在做CRM的报表,查询条件只需要年月,DateEdit 以及几个时间控件都用的不顺,强迫症犯了一怒之下起了重写DateEdit的想法
新建一个类
CXDateEdit
然后在窗体xxx上拖一个dateedit ,进入xxx.Designer.cs 将设计器代码 this.dateedit =new DevExpress.XtraEditors.DateEdit();
改成 重写的类
原博地址:http://www.cnblogs.com/axing/p/3201066.html
新建一个类
CXDateEdit
using DevExpress.XtraEditors; using DevExpress.XtraEditors.Calendar; using DevExpress.XtraEditors.Controls; using DevExpress.XtraEditors.Popup; using DevExpress.XtraEditors.Repository; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MLTY.Business.Report { public class CXDateEdit : DateEdit { public CXDateEdit() { Properties.VistaDisplayMode = DevExpress.Utils.DefaultBoolean.True; Properties.DisplayFormat.FormatString = "yyyy-MM"; Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime; Properties.Mask.EditMask = "yyyy-MM"; Properties.ShowToday = false; } protected override PopupBaseForm CreatePopupForm() { if (Properties.VistaDisplayMode == DevExpress.Utils.DefaultBoolean.True) return new CustomVistaPopupDateEditForm(this); return new PopupDateEditForm(this); } private DateResultModeEnum _dateMode = DateResultModeEnum.FirstDayOfMonth; public DateResultModeEnum DateMode { get { return _dateMode; } set { _dateMode = value; } } public enum DateResultModeEnum : int { //虽然是年月控件,但日期Datetime肯定是2012-01-01这种格式 //所以,这个枚举定义了年月控件返回本月的第一天,还是本月的最后一天作为DateEditEx的值 FirstDayOfMonth = 1, LastDayOfMonth = 2 } } public class CustomVistaPopupDateEditForm : VistaPopupDateEditForm { public CustomVistaPopupDateEditForm(DateEdit ownerEdit) : base(ownerEdit) { } protected override DateEditCalendar CreateCalendar() { return new CustomVistaDateEditCalendar(OwnerEdit.Properties, OwnerEdit.EditValue); } } public class CustomVistaDateEditCalendar : VistaDateEditCalendar { public CustomVistaDateEditCalendar(RepositoryItemDateEdit item, object editDate) : base(item, editDate) { } protected override void Init() { base.Init(); this.View = DateEditCalendarViewType.YearInfo; } public CXDateEdit.DateResultModeEnum DateMode { get { return ((CXDateEdit)this.Properties.OwnerEdit).DateMode; } } protected override void OnItemClick(DevExpress.XtraEditors.Calendar.CalendarHitInfo hitInfo) { DayNumberCellInfo cell = hitInfo.HitObject as DayNumberCellInfo; if (View == DateEditCalendarViewType.YearInfo) { DateTime dt = new DateTime(DateTime.Year, cell.Date.Month, 1, 0, 0, 0); if (DateMode == CXDateEdit.DateResultModeEnum.FirstDayOfMonth) { OnDateTimeCommit(dt, false); } else { DateTime tempDate = dt.AddMonths(1).AddDays(-1); tempDate = new DateTime(tempDate.Year, tempDate.Month, tempDate.Day, 23, 59, 59); OnDateTimeCommit(tempDate, false); } } else base.OnItemClick(hitInfo); } } }
然后在窗体xxx上拖一个dateedit ,进入xxx.Designer.cs 将设计器代码 this.dateedit =new DevExpress.XtraEditors.DateEdit();
改成 重写的类
原博地址:http://www.cnblogs.com/axing/p/3201066.html
相关文章推荐
- jquery.lazyload 实现图片延迟加载jquery插件
- 栈的使用之计算表达式的值
- 【ActionBar】Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)
- 虚函数的机制
- 招人不易留人更难——创业团队要闯哪些关?
- axis2 webService项目 客户端生成方法
- 【linux】ubuntu下navicat for mysql安装
- jQuery 间歇式无缝滚动特效分享(三张图片平行滚动)
- 使用电脑远程调试安卓手机上浏览器的JS
- 机房收费系统——起步阶段需要做的工作,怎么附加数据库?怎么注册控件?
- java下载excel文件源码(可选择保存文件路径)
- 搭建从java到android的开发环境
- 密码安全性检查代码
- Excel 复制Sql查询结果错位
- 如何搭建二维码支付系统?
- ios自定义构造方法
- 程序员应有素质
- 机房收费系统验收之思想无价
- win7 telnet
- android 进程间通信数据(二)------parcel的实现