WPF 4 0 DatePicker 快速錄入

2021-09-07 01:28:35 字數 1480 閱讀 6004

wpf 4.0的datepicker在通過鍵盤錄入日期的時候是非常讓人鬱悶的。必須按照日期的格式來完整輸入

例如,比如輸入「2010/10/10」才能識別。而實際上在一些要求快速錄入的場合,使用者更希望直接敲20101010就行了。

遺憾的是,datepicker沒有乙個屬性可以設定說錄入的格式是yyyymmdd這種的。

實際上,仔細看一下datepicker控制項,它有乙個datevalidationerror事件,當輸入的文字無法識別為日期時,就會觸發該事件。我們可以利用這個事件來做一些事情。

為了方便使用,我們可以封裝乙個附加屬性,在需要快速錄入的地方attach一下就好了。

public static readonly dependencyproperty enablefastinputproperty =

dependencyproperty.registerattached("enablefastinput", typeof(bool), typeof(datepickerhelper),

new frameworkpropertymetadata((bool)false,

new propertychangedcallback(onenablefastinputchanged)));

public static bool getenablefastinput(dependencyobject d)

public static void setenablefastinput(dependencyobject d, bool value)

這樣,我們就給乙個datepickerhelper型別註冊了乙個附加屬性,叫做enablefastinput。

在這個屬性的propertychanged事件處理函式中,我們監聽datepicker的datevalidationerror事件

private static void onenablefastinputchanged(dependencyobject d, dependencypropertychangedeventargs e)

else}}

在事件處理中,我們嘗試著解析文字,並且設定日期:

private static void datepickerondatevalidationerror(object sender, datepickerdatevalidationerroreventargs e)}}

在xaml中使用時:

這樣,datepicker就支援直接輸入yyyymmdd格式的日期了。

當然,這裡的日期格式是寫死的,可以考慮封裝成另外乙個datepickerhelper.inputdateformat屬性之類的,更加靈活

【效果圖】

原文(有原始碼):

WPF 4 0 DatePicker 快速錄入

原文 wpf 4.0 datepicker 快速錄入 wpf 4.0的datepicker在通過鍵盤錄入日期的時候是非常讓人鬱悶的。必須按照日期的格式來完整輸入 例如,比如輸入 2010 10 10 才能識別。而實際上在一些要求快速錄入的場合,使用者更希望直接敲20101010就行了。遺憾的是,da...

快逸報表4 0 分組處理

b 右側作為上級分組的處理 b 快逸報表分組顯示時預設都是從左向右分級分組。比如從左向右a,b,c,d4列。a列為國家,b列為省,c列為市,d列為區。則可以對查詢出的資料直接使用分組函式 ds1.group a ds1.group b ds1.group c ds1.select d 注意這裡d列有...

劍指 Offer 40 最小的k個數 快排 堆

劍指 offer 40.最小的k個數 輸入整數陣列 arr 找出其中最小的 k 個數。例如,輸入4 5 1 6 2 7 3 8這8個數字,則最小的4個數字是1 2 3 4。示例 1 輸入 arr 3,2,1 k 2 輸出 1,2 或者 2,1 示例 2 輸入 arr 0,1,2,1 k 1 輸出 0...