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();
    }
4

1 回答 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;
于 2010-01-25T10:24:49.947 回答