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. mybatis 插入日期类型精确到秒的有关问题

    mybatis 插入日期类型精确到秒的问题 Mybatis 插入 数据库是为了防止插入空时报错, Mybatis 提供了一套机制,只要给定插入的字段的类型,如果为空,则它会自动处理为相应类型的默认值: ...

  2. Java实现二维码QRCode的编码和解码

    涉及到的一些主要类库,方便大家下载: 编码lib:Qrcode_swetake.jar   (官网介绍-- http://www.swetake.com/qr/index-e.html) 解码lib: ...

  3. @JsonFormat时间不对

    实际时间为:2015-07-06 20:20:23 1. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")    private Date ...

  4. OPenGL中三维图形的矩阵变换

    对于二维的图形开发,拿简单的图片显示来说,我们主要的目的:就是在一块显示buffer中,不停的把每个像素进行着色,然后就可以绘制出来了.为了速度,很多其他的加速方法,但原理基本上就是这样了. 很直观, ...

  5. kmalloc/kfree,vmalloc/vfree函数用法和区别

    http://blog.csdn.net/tigerjibo/article/details/6412881 kmalloc/kfree,vmalloc/vfree函数用法和区别 1.kmalloc ...

  6. php相关学习资源

    相关书籍资源: 1:PHP和MySQL Web开发 经典书籍 视频教程: PHP开发工程师闯关记--初识PHP php调试技巧: PHP 程序员的调试技术 使用 print 语句.错误报告和 PHPE ...

  7. Spring整合CXF,发布RSETful 风格WebService(转)

    Spring整合CXF,发布RSETful 风格WebService 这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有很大一部分都是一样的.关于发布CXF WebServer和Sp ...

  8. QTP鼠标点击和浏览器事件的动态切换

    今天在群里有人问到一个问题,我觉得应该会有很多人会碰到,今天根据自己的思路把这个解决方案整理出来,供自己和大家参考 需求描述: 当输入一个身份证号码的时候,这个号码所对应的数据会被加载到所属的省和市的 ...

  9. ios摇一摇

    -(void) motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event { if (motion==UIEventSubtypeMo ...

  10. 从Uboot到Linux技术内幕

    1. 引言 在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行.一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 1. 引导加载程序.包括固化在固件(firmware) ...