/// <summary>
        /// Handle a change in the user preferences.
        /// </summary>
        /// <param name="sender">Source of event.</param>
        /// <param name="e">Event data.</param>
        protected override void OnUserPreferenceChanged(object sender, UserPreferenceChangedEventArgs e)
        {
            // Remove the current table, so it gets regenerated when next requested
            _table = null;

            if (_disabledDropDownImage != null)
            {
                _disabledDropDownImage.Dispose();
                _disabledDropDownImage = null;
            }

            if (_normalDropDownImage != null)
            {
                _normalDropDownImage.Dispose();
                _normalDropDownImage = null;
            }

            if (_galleryImageUp != null)
            {
                _galleryImageUp.Dispose();
                _galleryImageUp = null;
            }

            if (_galleryImageDown != null)
            {
                _galleryImageDown.Dispose();
                _galleryImageDown = null;
            }

            if (_galleryImageDropDown != null)
            {
                _galleryImageDropDown.Dispose();
                _galleryImageDropDown = null;
            }

            // Update fonts to reflect any change in system settings
            DefineFonts();

            // Generate the myriad ribbon colors from system settings
            DefineRibbonColors();

            base.OnUserPreferenceChanged(sender, e);
        }