最近项目中不少地方使用到DevExpress的DateEdit控件,并且设置都是一致(日期格式、选择日期的日历的风格等)。每一次都须要设置太痛苦,所以须要寻找一种高效的解决方式。编程
1、 设置好一个做为模板,其它地方须要的话复制粘贴ide
这是一个好方法,不过对于我这种但愿经过编程思惟的方式来解决问题的话,这种不是最好的方法。工具
2、 对DateEdit封装一个扩展方法,扩展方法里设置好以上所提到的设置项, 每次都在代码里调用扩展方法。spa
这种方法貌似是编程方式,可是每次都须要调用扩展方法,显然并非最好的。3d
3、 重写默认的DateEdit设置,也就是本篇的核心。code
首先,添加一个DevExpress Item,在弹出的窗体中左侧选择Custom Data Edit,右侧Base Editor中下拉选择DateEdit,修改好Type Name与Item Name, 勾选ViewInfo(Painter和PopupForm能够不勾选),点击Add Item完成添加自定义DateEdit控件。orm
此处个人TypeName为MyDateEdit,Item Name为MyDateEdit.csblog
在RepositoryItemMyDateEdit类中,添加剧写方法CreateMaskProperties,实现以下:get
protected override MaskProperties CreateMaskProperties() { MaskProperties maskProperties = base.CreateMaskProperties(); maskProperties.MaskType = MaskType.DateTime; maskProperties.EditMask = @"yyyy-MM"; maskProperties.UseMaskAsDisplayFormat = true; return maskProperties; }
在MyDateEdit类中,修改原来的Propertie属性代码。it
修改前:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public new RepositoryItemMyDateEdit Properties { get { return base.Properties as RepositoryItemMyDateEdit; } }
修改后:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public new RepositoryItemMyDateEdit Properties { get { RepositoryItemMyDateEdit repositoryItemDateEdit = base.Properties as RepositoryItemMyDateEdit; if (repositoryItemDateEdit != null) { repositoryItemDateEdit.VistaCalendarInitialViewStyle = VistaCalendarInitialViewStyle.YearView; repositoryItemDateEdit.VistaCalendarViewStyle = VistaCalendarViewStyle.YearView; } return repositoryItemDateEdit; } }
编译后,在工具箱就能看到MyDateEdit控件。 将控件拖拽到winform窗体中,运行程序,效果以下。