Serialcoder en Français Serialcoder in English
TEL : +33 (0)9 72 13 15 17

Windows Forms FAQ resources

18. Windows Forms Tips

18.20 How can I tell if the user has changed some system preference such as the locale or display settings?


Use the static events in the SystemEvents class found in the Microsoft.Win32 namespace. There are many events in this class. Here are a couple:

     SystemEvents.DisplaySettingsChanged += new System.EventHandler(displaySettingsChanged);
     SystemEvents.UserPreferenceChanged +=
                    new UserPreferenceChangedEventHandler(userPreferencesChanged);

     .............
     .............

     private void displaySettingsChanged(object sender, EventArgs e)
     {
          MessageBox.Show(e.ToString());
     }
     
     private void userPreferencesChanged(object sender, UserPreferenceChangedEventArgs e)
     {
          switch(e.Category)
          {
               case UserPreferenceCategory.Locale:
                    MessageBox.Show("Changed locale");
                    break;
               default:
                    MessageBox.Show(e.Category.ToString());
                    break;
          }
     }