最近項目中很多地方使用到DevExpress的DateEdit控制項,而且設置都是一致(日期格式、選擇日期的日曆的風格等)。每一次都需要設置太痛苦,因此需要尋找一種高效的解決方式。 一、 設置好一個作為模板,其它地方需要的話複製粘貼 這是一個好方法,不過對於我這種希望通過編程思維的方式來解決問題的話, ...
最近項目中很多地方使用到DevExpress的DateEdit控制項,而且設置都是一致(日期格式、選擇日期的日曆的風格等)。每一次都需要設置太痛苦,因此需要尋找一種高效的解決方式。
一、 設置好一個作為模板,其它地方需要的話複製粘貼
這是一個好方法,不過對於我這種希望通過編程思維的方式來解決問題的話,這種不是最好的方法。
二、 對DateEdit封裝一個擴展方法,擴展方法里設置好以上所提到的設置項, 每次都在代碼里調用擴展方法。
這種方法貌似是編程方式,但是每次都需要調用擴展方法,顯然並不是最好的。
三、 重寫預設的DateEdit設置,也就是本篇的核心。
首先,添加一個DevExpress Item,在彈出的窗體中左側選擇Custom Data Edit,右側Base Editor中下拉選擇DateEdit,修改好Type Name與Item Name, 勾選ViewInfo(Painter和PopupForm可以不勾選),點擊Add Item完成添加自定義DateEdit控制項。
此處我的TypeName為MyDateEdit,Item Name為MyDateEdit.cs
在RepositoryItemMyDateEdit類中,添加重寫方法CreateMaskProperties,實現如下:
protected override MaskProperties CreateMaskProperties()
{
MaskProperties maskProperties = base.CreateMaskProperties();
maskProperties.MaskType = MaskType.DateTime;
maskProperties.EditMask = @"yyyy-MM";
maskProperties.UseMaskAsDisplayFormat = true;
return maskProperties;
}
在MyDateEdit類中,修改原來的Propertie屬性代碼。
修改前:
[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窗體中,運行程式,效果如下。