Я написал это, чтобы быстро протестировать
Почему не сохранены мои настройки? В первый раз, когда я запускаю это, у меня есть 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();
}
Вы должны использовать открытые свойства вместо того, чтобы помещать свои данные в контекст:
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;