2016-02-13 12 views
6

Sto creando un genealogical tree app e ho bisogno di raggiungere questa data. Preferirei DateTimePicker piuttosto che TextBox + conversione data-testo.DateTimePicker: come impostare MinDate prima del 1753

Esiste comunque un modo per eludere questa limitazione?

+6

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. –

+1

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

risposta

2

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.

Problemi correlati