用户范围应用设置始终重置为默认值

时间:2009-05-28 17:13:59

标签: .net winforms configuration

我有一个使用.NET 2的“设置”功能的WinForms应用程序,但应用程序中保存的用户范围设置值通常会被存储在“设置”类中的默认值替换。很久以前,我在某个地方找到了指导,将其归因于自动递增的内部版本号,我怀疑这是真的。但是,所述指南建议使用以下代码,但不知怎的,我的设置仍然会重置。

我现在正在解决太多其他问题而不是深入研究这个问题,我认为我已经完成了问题,看看是否有人可以帮助我,以及其他所有人是否有这个问题。

    private void Form1_Load(object sender, EventArgs e)
    {
        UpgradeSettings();
        GetSettings();
    }

    private void UpgradeSettings()
    {
        if (Properties.Settings.Default.CallUpgrade)
        {
            Properties.Settings.Default.Upgrade();
            Properties.Settings.Default.CallUpgrade = false;
        }
    }

2 个答案:

答案 0 :(得分:1)

您必须按如下方式修改UpgradeSettings。 CallUpgrade的初始值应为true(在“用户设置”中)。

private void Form1_Load(object sender, EventArgs e)
{
    UpgradeSettings();
    GetSettings();
}

private void UpgradeSettings()
{
    if (Properties.Settings.Default.CallUpgrade)
    {
        Properties.Settings.Default.Upgrade();
        Properties.Settings.Default.Reload(); // to activate the settings
        Properties.Settings.Default.CallUpgrade = false;
        Properties.Settings.Default.Save();// to save the new value of CallUpgrade            
    }
}

答案 1 :(得分:0)

CallUpgrade默认为true吗?对Upgrade()的调用应该跨构建号迁移设置。

另一种方法是使用固定版本号。您可以根据需要手动修改AssemblyInfo.cs。