2009-10-25 2 views

Répondre

7

Vous ne pouvez pas.

La date maximale prise en charge par DateTimePicker est DateTimePicker.MaximumDateTime, soit le 31/12/9998; DateTime.MaxValue est 31/12/9999 23:59:59, ce qui est un an et un jour plus tard. Pouvez-vous utiliser cette DateTimePicker.MaximumDateTime au lieu de DateTime.MaxValue?

+1

Bien sûr, je peux maintenant que je sais :) – programmernovice

+3

Toute idée pourquoi ils sont différents? Je n'ai trouvé aucune explication sur Google. – MusiGenesis

+1

Je ne sais pas; J'ai jeté un rapide coup d'œil à la source et n'ai trouvé aucune raison évidente. – SLaks

1

Peut-être est utile:

La valeur de cette constante est équivalent à 23: 59: 59,9999999, 31 Décembre 9999, exactement un tique 100 nanosecondes avant 00:00:00 1 Janvier, 10000.

Certains calendriers, comme le UmAlQuraCalendar, soutenir une plage de dates supérieure qui est antérieure à MaxValue. Dans ces cas, essayer accéder MaxValue dans la variable affectations ou la mise en forme et l'analyse des opérations peut lancer une ArgumentOutOfRangeException. Plutôt que de récupérer la valeur de DateTime .. ::. MaxValue, vous pouvez récupérer la valeur de la dernière valeur de date valide de la culture spécifiée de la System.Globalization.CultureInfo.DateTimeFormat.Calendar.MaxSupportedDateTime propriété .

copié de façon flagrante de msdn

+1

Pourquoi cela serait-il utile? – SLaks

2

Oui vous pouvez, mais il est très sale (l'utiliser à vos propres risques). Fondamentalement, il écrase le MaxValue défini dans le DateTimePicker avec le MaxValue de l'objet DateTime.

coller ce code dans le Main (ou toute autre méthode exécuter au démarrage):

var dtpType = typeof(DateTimePicker); 
var field = dtpType.GetField("MaxDateTime", BindingFlags.Public | BindingFlags.Static); 
if (field != null) 
{ 
    field.SetValue(new DateTimePicker(), DateTime.MaxValue); 
} 
Questions connexes