2016-02-13 43 views
6

我正在構建一個genealogical tree app,我需要達到此日期。我更喜歡DateTimePicker而不是TextBox +文本日期轉換。DateTimePicker:如何在1753之前設置MinDate

有沒有辦法繞過這個限制?

+6

不,硬限制。 1753年是英格蘭從朱利安切換到格里高利日曆的那一年,造成15天的損失。一位Sybase程序員避免黑洞,該公司啓動了SQL Server。你必須自己做。 –

+1

您將不得不創建自己的數據類型來處理日期,並使用Year,Month和Day屬性。您也可以爲簡單的函數(比如CompareTo(),AddYears(),AddDays()等)推出自己的方法和屬性。不幸的是,這也意味着要讓自己的日曆控件編輯這些日期。 – Mangist

回答

2

不幸的是,DateTimePicker控制不1753年1月1日前支持日期這最終是由於在ComCtl32 Common Controls libraryDate and Time PickerMonth Calendar控制限制。這些控件不支持1753年之前的日期,因爲這是格里曆和Julian日曆之間的分界線。由於控件基於公曆,因此它們不會計算與Julian日曆一致的日期。

這會影響.NET代碼的原因是因爲DateTimePicker類是較低級別comctl32控件的封裝。相關的代碼是here

可悲的是,這個限制也被結轉到the Mono implementation of the control,所以即使你使用DateTimePicker通過單在Linux或Mac,它仍然不會允許日期前,則即使在操作系統缺乏comctl32.dll的。

看起來像Telerik有their own DateTimePicker control。這可能值得調查。然而,在對文檔進行快速掃描後,我看不出它的限制(如果有的話)。

相關問題