Почему не сохраняется Properties.Settings.Default?

2

Я написал это, чтобы быстро протестировать

Почему не сохранены мои настройки? В первый раз, когда я запускаю это, у меня есть 3 (старых)/3 (текущих) элемента. Во второй раз я получаю 3 (старый)/5 (текущий), третий раз 5 (старый)/5 (текущий).

Когда я закрываю приложение, настройки полностью исчезают. Его 3 снова, когда я запускаю его. Я не внес изменений в приложение. Почему не сохранены мои настройки

    private void button2_Click(object sender, EventArgs e)
    {
        MyApp.Properties.Settings.Default.Reload();
        var saveDataold = MyApp.Properties.Settings.Default.Context;
        var saveData = MyApp.Properties.Settings.Default.Context;
        saveData["user"] = textBox1.Text;
        saveData["pass"] = textBox2.Text;
        MyApp.Properties.Settings.Default.Save();
    }
  • 0
    Кстати, почему более половины ваших вопросов без принятого ответа?
Теги:
web-applications
persistence
application-settings

1 ответ

4
Лучший ответ

Вы должны использовать открытые свойства вместо того, чтобы помещать свои данные в контекст:

var saveData = MyApp.Properties.Settings.Default;
saveData.user = textBox1.Text;
saveData.pass = textBox2.Text;

Контекст

предоставляет контекстуальную информацию, которая поставщик может использовать при сохранении Параметры

и в моем понимании не используется для хранения фактических значений настроек.

Обновление:, если вы не хотите использовать редактор настроек в Visual Studio для генерации свойств строго типизированного кода, которые вы можете сами его кодировать. Код, созданный VS, имеет такую ​​структуру:

    [UserScopedSetting]
    [DebuggerNonUserCode]
    [DefaultSettingValue("")]
    public string SettingName
    {
        get { return ((string)(this["SettingName"])); }
        set { this["SettingName"] = value; }
    }

Вы можете легко добавить дополнительные свойства, отредактировав файл Settings.Designer.cs.

Если вы не хотите использовать сильно типизированные свойства, вы можете напрямую использовать индексатор this[name]. Тогда ваш пример будет выглядеть так:

    var saveData = MyApp.Properties.Settings.Default;
    saveData["user"] = textBox1.Text;
    saveData["pass"] = textBox2.Text;
  • 0
    это ... не здорово :(. Так мне нужно создать свойства в IDE или я могу сделать это как-то в коде?
  • 0
    Добавлено обновление, что если вы не хотите автоматически сгенерированные свойства ...
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню