在C#中使用设置类

时间:2012-12-06 10:24:04

标签: c# winforms properties.settings

我正在使用Properties.Settings类来保存应用程序设置。我想知道,一旦我在客户端系统中部署,是否会在应用程序重启和系统重启时保存设置。

考虑一下情景:

部署应用程序后,用户将通过UI保存手机号码

电话:1xxxx - 45678

现在,我将电话号码保存为

 Properties.Settings.Default.ClientPhone = this.PhoneText.Text;
 Properties.Settings.Default.Save();

我的理解是,电话号码会在app.restarts中重新启动并保存在应用程序中吗?

3 个答案:

答案 0 :(得分:3)

这是应用程序和用户设置的不同之处。应用程序设置是只读的。用户设置永久存储在每个用户的基础上。 您的代码正是更改和保存用户设置所需的代码

请注意:由于它们被称为“用户设置”,它们将为机器上的每个用户单独存储!您不能使用默认的.NET设置机制创建对所有用户都相同的可更改设置。

不要重新发明轮子!使用.NET设置机制 - 您在示例中正确执行: - )

答案 1 :(得分:2)

这样可以正常工作,但要记住的一件事是,如果安装新版本的程序,它将“丢失”旧设置(因为这些设置特定于程序的特定版本)。 (“版本”是指AssemblyVersion)

幸运的是,你可以通过在Main()的开头或附近调用以下函数来解决这个问题。为此,您需要添加一个名为NeedSettingsUpgrade的新布尔设置属性,并将其默认为'true':

/// <summary>Upgrades the application settings, if required.</summary>

private static void upgradeProgramSettingsIfNecessary()
{                                                        
    // Application settings are stored in a subfolder named after the full #.#.#.# version
    // number of the program. This means that when a new version of the program is installed,
    // the old settings will not be available.
    //
    // Fortunately, there's a method called Upgrade() that you can call to upgrade the settings
    // from the old to the new folder.
    //
    // We control when to do this by having a boolean setting called 'NeedSettingsUpgrade' which
    // is defaulted to true. Therefore, the first time a new version of this program is run, it
    // will have its default value of true.
    //
    // This will cause the code below to call "Upgrade()" which copies the old settings to the new.
    // It then sets "NeedSettingsUpgrade" to false so the upgrade won't be done the next time.

    if (Settings.Default.NeedSettingsUpgrade)
    {
        Settings.Default.Upgrade();
        Settings.Default.NeedSettingsUpgrade = false;
    }
}

答案 2 :(得分:1)

快速谷歌应该已经为你完成了。

是的,他们会根据msdn:.NET allows you to create and access values (settings) that are persisted between application execution sessions.

http://msdn.microsoft.com/en-us/library/aa730869(v=vs.80).aspx