Mask与Display只显示年月2012-02这种格式,但用户选择起来还是不爽,体验太差。

效果如下:

代码:

using Microsoft.VisualBasic;

using System;

using System.Collections;

using System.Collections.Generic;

using System.Data;

using System.Diagnostics;

using DevExpress.XtraEditors;

using DevExpress.XtraEditors.Calendar;

using DevExpress.XtraEditors.Popup;

using DevExpress.XtraEditors.Controls;

using DevExpress.XtraEditors.Repository;

namespace LZJA.Common

{

public class DateEditEx : DateEdit

{

public DateEditEx()

{

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 DateEditEx.DateResultModeEnum DateMode

{

get { return ((DateEditEx)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 == DateEditEx.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);

}

}

}

 

Devexpress DateEdit选年月 z的更多相关文章

  1. 修改Devexpress DateEdit控件默认的日期格式和日历风格

    最近项目中很多地方使用到DevExpress的DateEdit控件,而且设置都是一致(日期格式.选择日期的日历的风格等).每一次都需要设置太痛苦,因此需要寻找一种高效的解决方式. 一. 设置好一个作为 ...

  2. DevExpress DateEdit 5 常见问题解决方法

    1. 如何设置选择的日期大于当天? dateEdit1.Properties.MinValue = DateTime.Now.AddDays(1) 2. 如何做到只显示年.月? var formatS ...

  3. 关于在datepicker中,只选年月

    有这么个需求,datepicker默认是选某个具体的日子的,但是现在只选到年月为止, solution: html如下: <div> <label for="startDa ...

  4. Devexpress DateEdit控件的值不反馈到数据源的处理方式。

    如果在GridControl中要把编辑的值反馈到数据源,可以用Gridview1.PostEdit()方法. 可是在datalayout中使用就会遇到一些问题:比如说DateEdit控件,在保存数据的 ...

  5. Winform之SpreadSheetGear转DevExpress.XtraSpreadsheet.v13.2 z

    DevExpress.XtraSpreadsheet.v13.2 允许用户创建.管理.打印.转换spreadsheet文件而不需要用户安装Office. 什么是Spreadsheet 可以看到最后就是 ...

  6. Winform使用DevExpress的WaitDialogForm画面 z

    使用了DevExpress的WaitDialogForm 在应用程序加载开始时新建一个线程,并将loading画面show起来,在应用程序画面弹出前将该线程终止. 代码: private DevExp ...

  7. DevExpress GridView属性设置 z

    本文主要总结控件的属性设置,附上图片,给大家一个参考.后续会给大家分享功能实现和使用的小技巧. GirdControl是数据的容器,它包含多种显示方式,GridView则是一种二维表格视图. 绑定数据 ...

  8. DevExpress DateEdit控件选择精确到秒

    先看看下面的效果图: 设置以下属性 dateEdit1.Properties.VistaDisplayMode = DevExpress.Utils.DefaultBoolean.True; date ...

  9. DevExpress打印功能介绍 z

    一.打印功能说明: 打印功能,我们有多种实现方式,可以根据需要自行选择,我简单的总结下两种方法. (1).使用微软.net框架自带的PrintDocument,这种方式是直接借助Graphics,自行 ...

随机推荐

  1. JsRender系列demo(7)compline

    <!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery.j ...

  2. 【转】Windows平台SSH登录Linux并使用图形化界面

    备注:经验证本文提供的方法可行且比使用VNC简洁一些.略有修改.   [日期:2011-09-06] 来源:Linux社区  作者:tianhuadihuo   http://www.linuxidc ...

  3. 【Linux高频命令专题(23)】tar

    概述 通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar命令就是是必不可少的一个功能强大的工具.linux中最流行的tar是麻雀虽小,五脏俱全,功能强大. tar命令可以为li ...

  4. 从svn删除文件夹和文件

    由于项目开始放在自己项目组的一个服务器上,而且svn也是自己在该服务器上搭建的,但是不知道是什么原因,svn上的代码被误删了.为了更稳定地使用svn,所以使用公司的svn来管理代码. 运维将不是最新版 ...

  5. C内存分配函数

    C语言跟内存分配方式(1) 从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量.(2) 在栈上创建.在执行函数时,函数内局部变量的 ...

  6. 用 React 编写SVG图表

    1.代码 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="U ...

  7. 258. Add Digits

    题目: Given a non-negative integer num, repeatedly add all its digits until the result has only one di ...

  8. C++:运算符重载函数之"++"、"--"、"[ ]"、"=="的应用

    5.2.5 "++"和"--"的重载 对于前缀方式++ob,可以用运算符函数重载为: ob.operator++() //成员函数重载 或 operator++ ...

  9. 利用PhantomJS搭建Highcharts export服务

    利用PhantomJS搭建Highcharts export服务 一直在使用Highcharts做web图表的展示, 但是当发送定时的报表邮件的遇到了这个问题. 为了保证邮件图表和web页图表样式一致 ...

  10. taglist

    http://blog.csdn.net/duguteng/article/details/7412652 这两天看到网上有将vim 改造成功能强大的IDE的blog,突然心血来潮,亲身经历了一下. ...