我写这篇文章是为了快速测试
为什么我的设置没有保存?第一次运行这个我有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 :(得分: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;