2009-01-29 6 views
2

Je travaille sur une application C# qui essaie de respecter le format d'heure du système sur lequel elle s'exécute. Si le panneau de configuration de Windows est changé en format 24 heures, c'est le format dans lequel l'application affichera l'heure. Quoi qu'il en soit, cela fonctionne correctement, sauf si le format de l'heure est modifié avant l'exécution de l'application. Si vous modifiez le format d'heure de Windows pendant que l'application est en cours d'exécution, il n'utilisera pas le format mis à jour.Respecter les modifications à la volée du format d'heure Windows

Existe-t-il un type d'événement Windows ou un autre moyen de récupérer le format le plus récent? Nous utilisons actuellement le LongTimePattern DateTimeFormatInfo car il change selon que nous sommes dans 12 ou 24 heures.

Répondre

8

Il existe une classe SystemEvents dans l'espace de noms Microsoft.Win32 qui contient un ensemble d'événements statiques auxquels vous pouvez vous abonner. Vous voudrez vous abonner à l'événement UserPreferenceChanged:

SystemEvents.UserPreferenceChanged += new UserPreferenceChanged; 

/* Other stuff... */ 

private static void UserPreferenceChanged(object s, UserPreferenceChangedEventArgs e) 
{ 
    if (e.Category == UserPreferenceCategory.Locale) 
    { 
     /* They changed regional settings, so do your work here */ 
    } 
} 
Questions connexes