Purtroppo, il controllo DateTimePicker
non supporta le date prima del 1 gennaio 1753. Questo è in ultima analisi, a causa dei limiti nei Date and Time Picker e Month Calendar controlli nel ComCtl32
Common Controls library. Questi controlli non supportano le date precedenti al 1753 perché questa è la linea divisoria tra i calendari gregoriano e giuliano. Poiché i controlli si basano sul calendario gregoriano, non calcolano date coerenti con il calendario giuliano.
Il motivo per cui questo problema interessa il codice .NET è perché la classe DateTimePicker
è un wrapper attorno ai controlli di livello inferiore comctl32
. Il codice rilevante è here.
Purtroppo, questa limitazione è anche riportato in the Mono implementation of the control, quindi, anche se si utilizza DateTimePicker
attraverso Mono su Linux o Mac, ancora non permetterà date prima di allora, nonostante la mancanza di un comctl32.dll
nel sistema operativo.
Sembra che Telerik abbia their own DateTimePicker
control. Potrebbe essere degno di indagine. Dopo una rapida scansione dei documenti, però, non vedo quali sono i suoi limiti, se ce ne sono.
No, limite rigido. Il 1753 fu l'anno in cui l'Inghilterra passò dal calendario giuliano a quello gregoriano, causando la perdita di 15 giorni. Evitamento del buco nero da parte di un programmatore Sybase, la società che ha avviato SQL Server. Dovrai crearne uno tuo. –
Dovrai creare il tuo tipo di dati per gestire le date, con una proprietà Anno, Mese e Giorno. È anche possibile eseguire il rollover dei propri metodi e proprietà per funzioni semplici come CompareTo() e AddYears(), AddDays(), ecc. Sfortunatamente questo significa anche che è possibile creare il proprio controllo del calendario per modificare tali date. – Mangist