/// <summary>
        /// ComboBox value
        /// </summary>
        /// <param name="_settingKey"></param>
        /// <param name="_settingChoice"></param>
        /// <returns></returns>
        public bool UpdateSettingValue(string _settingKey, string _settingChoice)
        {
            if (userSettings.ContainsKey(_settingKey))
            {
                if (userSettingRules.TryGetValue(_settingKey, out object obj))
                {
                    Type t = obj.GetType();
                    //ComboBox Setting
                    if (t == typeof(ComboSetting))
                    {
                        ComboSetting cbs = (ComboSetting)obj;
                        //Do we have multiple settings stored in a single setting line?
                        if (cbs.MultiMode)
                        {
                            //Get the multiple settings
                            ComboSetting.Setting[] settings = cbs.GetMultiSettings(_settingChoice);
                            foreach (ComboSetting.Setting setting in settings)
                            {
                                userSettings[setting.Name] = setting.Value;
                                Console.WriteLine(string.Concat(setting.Name, "=", setting.Value));
                            }
                        }
                        else
                        {
                            userSettings[_settingKey] = cbs.GetSettingValue(_settingChoice);
                        }
                    }
                    //TrackBar Setting
                    else if (t == typeof(TrackBarSetting))
                    {
                        TrackBarSetting tbs = (TrackBarSetting)obj;
                        try {
                            userSettings[_settingKey] = tbs.SettingValue(Int32.Parse(_settingChoice));
                        }
                        catch (Exception ex) {
                            Console.WriteLine("UpdateSettingsValue: ", _settingKey, " failed to convert value ", _settingChoice, " to Int32/n", ex.Message);
                        }
                    }
                }
                else
                {
                    userSettings[_settingKey] = _settingChoice;
                }

                Console.WriteLine(string.Concat(_settingKey, "=", userSettings[_settingKey]));

                return(true);
            }
            return(false);
        }
        public string GetGuiSetting(string _settingsKey)
        {
            if (userSettings.TryGetValue(_settingsKey, out string settingOption))
            {
                if (userSettingRules.TryGetValue(_settingsKey, out object obj))
                {
                    Type t = obj.GetType();
                    if (t == typeof(ComboSetting))
                    {
                        ComboSetting cbs = (ComboSetting)obj;
                        if (cbs.MultiMode)
                        {
                            List <string> settings = new List <string>();
                            bool          valid;

                            ComboSetting.Setting currSetting = new ComboSetting.Setting();
                            foreach (string combination in cbs.ItemsbyLineNameKeys)
                            {
                                cbs.SplitSettings(combination, ref settings);
                                valid = true;
                                //Check if this combination of settings is used
                                foreach (string setting in settings)
                                {
                                    currSetting.Name  = setting.Substring(0, setting.IndexOf("="));
                                    currSetting.Value = setting.Remove(0, setting.IndexOf("=") + 1);
                                    if (userSettings[currSetting.Name] != currSetting.Value)
                                    {
                                        valid = false;
                                        break;
                                    }
                                }

                                //Get the name for this combination set
                                if (valid)
                                {
                                    return(cbs.GetSettingName(combination));
                                }
                            }
                        }
                        else
                        {
                            return(cbs.GetSettingName(settingOption));
                        }
                    }
                }
                return(settingOption);
            }
            return(null);
        }