【问题标题】:User scope app settings always reset to defaults用户范围应用程序设置始终重置为默认值
【发布时间】:2010-10-29 15:45:08
【问题描述】:

我有一个使用 .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;
        }
    }

【问题讨论】:

  • 不应该调用 Properties.Settings.Default.Save() 吗?

标签: .net winforms configuration


【解决方案1】:

CallUpgrade 默认为 true 吗?对 Upgrade() 的调用应该跨内部版本号迁移设置。

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

【讨论】:

    【解决方案2】:

    您必须按如下方式修改 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            
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      • 2014-11-18
      • 2021-12-07
      • 2017-09-04
      相关资源
      最近更新 更多