玩转控件:重绘DEVEXPRESS中DateEdit控件 —— 让DateEdit支持只选择年月 (提供源码下载)
上一篇博文《玩转控件:重绘ComboBox —— 让ComboBox多列显示》中,根据大家的回馈,ComboBox已经支持筛选了,更新见博文最后最后最后面.
这两天遇到一个很“诡异”的情况,之前手机拦截短信一直用腾讯手机管家,这两天发神经,把腾讯手机管家卸载掉,换成360手机管家。然后一如既往的设置好闹钟,睡觉.. 结果尼玛一觉睡到自然醒!拿过手机一看11:35am,手机闹钟居然没响!我很希望今天是星期六,为此我还狠劲的捏了下我白里透红的小脸,却无法扭转今天星期五的窘境。 这还不是最奇葩的,奇葩的是,我拿起手机惊奇的发现:360不见了...腾讯也不见了...闹钟也不响了...我凌乱了. 不知道有没有人遇到过类似的问题、
这两天在维护DevExpress控件开发的报表,测试人员提出报表查询条件需要按月查询,我木讷的对着Dev自带的DateEdit控件许久,又找了几个Dev其他的时间控件,没有一个可以达到需求标准,于是有了下文:本篇博文代码部分来自网络,地址:http://www.devexpress.com/Support/Center/Question/Details/CQ60337
根据最近看了3遍的《新三国演义》中,诸葛亮占荆州后收取零陵时,一屠夫的话:"说出吾名,吓汝一跳"。随将该组件类前缀用鄙人姓名字母的缩写,使其继承DevExpress的DateEdit控件类,如下:
public partial class KzxDateEdit : DateEdit
我用的DevExpress控件是v10.1的,经过测试DevExpress神似在v7.1以上才支持Vista模式.(此处未经考证,如官方人员发现,请将此言论归为 大言不惭 之类别!)
下面贴出核心代码:
public partial class KzxDateEdit : DateEdit
{
public KzxDateEdit()
{
InitializeComponent();
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;
} public KzxDateEdit(IContainer container)
{
container.Add(this); InitializeComponent();
}
protected override PopupBaseForm CreatePopupForm()
{
if (Properties.VistaDisplayMode == DevExpress.Utils.DefaultBoolean.True)
return new CustomVistaPopupDateEditForm(this);
return new PopupDateEditForm(this);
} }
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;
} 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, , , , ); DateTime tempDate = dt.AddMonths().AddDays(-);
tempDate = new DateTime(tempDate.Year, tempDate.Month, tempDate.Day, , , );
OnDateTimeCommit(tempDate, false);
}
else
base.OnItemClick(hitInfo);
}
}
没错,仍然需要使出拖控件大法,将DevExpress中DateEdit控件拖到窗体中,然后将窗体的设计代码中InitializeComponent()方法剪切到窗体的.cs文件中,然后重新制定该DateEdit控件实例化对象即可。
//this.dateEdit1 = new DevExpress.XtraEditors.DateEdit();
this.dateEdit1 = new KzxDateEdit();
下面是运行效果图:
aaarticlea/png;base64,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" alt="" />
玩转控件:重绘DEVEXPRESS中DateEdit控件 —— 让DateEdit支持只选择年月 (提供源码下载)的更多相关文章
- VC++中关于控件重绘函数/消息 OnPaint,OnDraw,OnDrawItem,DrawItem的区别
而OnPaint()是CWnd的类成员,同时负责响应WM_PAINT消息. OnDraw()是CVIEW的成员函数,并且没有响应消息的功能.这就是为什么你用VC成的程序代码时,在视图类只有OnDraw ...
- 深入Windows窗体原理及控件重绘技巧
之前有学MFC的同学告诉我觉得Windows的控件重绘难以理解,就算重绘成功了还是有些地方不明白,我觉得可能很多人都有这样的问题,在这里我从Windows窗体的最基本原理来讲解,如果你有类似的疑惑希望 ...
- ActiveX 控件重绘无效问题,用CClientDC 而不是CPaintDC
ActiveX 控件重绘子控件时,用Invalid()会出现无效的情况即不会更新界面. OnPaint 方法里,是用的 CPaintDC,经测试无效,后换CClientDC,发现可以,百度查他们的区别 ...
- Winforn中DevExpress的TreeList中显示某路径下的所有目录和文件(附源码下载)
场景 Winform中DevExpress的TreeList的入门使用教程(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- Winform中DevExpress的TreeList的入门使用教程(附源码下载)
场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...
- openlayers4 入门开发系列之地图导航控件篇(附源码下载)
前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...
- arcgis api 3.x for js 共享干货系列之二自定义 Navigation 控件样式风格(附源码下载)
0.内容概览 自定义 Navigation 控件样式风格 源码下载 1.内容讲解 arcgis api 3.x for js 默认的Navigation控件样式风格如下图:这样的风格不能说不好,各有各 ...
- leaflet-webpack 入门开发系列四图层控件样式优化篇(附源码下载)
前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 w ...
- 基于DevExpress的SpreadsheetControl实现对Excel的打开、预览、保存、另存为、打印(附源码下载)
场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...
随机推荐
- 20162311 解读同伴的收获&解决同伴的问题(11月29日,周三)
20162311 解读同伴的收获&解决同伴的问题(11月29日,周三) 解读同伴的收获 我的同组同学是20162325学号金立清同学 同组同学的收获是:递归算法的非递归实现.分治法.动态规划法 ...
- C++ 项目中直接使用JsonCpp源码文件
之前在网上看到使用JsonCpp都是以库的形式使用(编译源码为静态库或者动态库),这样引用很方便,但有时候报错调试看不到错误的地方,所以就想直接把源文件添加到项目中,方便调试 这是用到源码文件: 创建 ...
- static理解
static 修饰的变量称为类变量或全局变量或成员变量,在类被加载的时候成员变量即被初始化,与类关联,只要类存在,static变量就存在. 一个static变量单独划分一块存储空间,不与具体的对象绑定 ...
- BZOJ 1049 数字序列(LIS)
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1049 题意:给出一个数列A,要求:(1)修改最少的数字使得数列严格递增:(2)在( ...
- VS中 Winform查看窗体内控件之间的相互关系
视图----其他窗口----文档大纲 这样可以查看之前的窗体布局关系
- hadoop项目实战--ETL--(三)实现mysql表到HIVE表的全量导入与增量导入
一 在HIVE中创建ETL数据库 ->create database etl; 二 在工程目录下新建MysqlToHive.py 和conf文件夹 在conf文件夹下新建如下文件,最后的工程目录 ...
- Vhost.conf 范例
NameVirtualHost *:80 <VirtualHost *:80> ServerName haofei.com DocumentRoot "E:/test/" ...
- spoj TBATTLE 质因数分解+二分
题目链接:点击传送 TBATTLE - Thor vs Frost Giants #number-theory #sliding-window-1 Thor is caught up in a fie ...
- 智能边缘计算,让IoT有大智慧
丹棱君有话说:什么是智能边缘计算(Edge Computing)?别着急,它可是与你与我都有着千丝万缕的联系.物联网(IoT)的概念早已飞入寻常百姓家,在日常生活中的许多场景发挥着“智能”作用.比如, ...
- MongoDB(课时25 地理信息索引)
3.6.4 地理信息索引 地理信息索引分为两类:2D平面索引,2DSphere球面索引.在2D索引里面基本上能够保存的信息都是坐标,而且坐标保存的就是经纬度坐标. 范例:定义一个shop的集合 db. ...