C# 添加新设置运行时

C# 添加新设置运行时,c#,.net,settings,C#,.net,Settings,我正在尝试使用选项卡保存应用程序的设置。每个选项卡显示路径中的一些数据。我是这样存储的: private Dictionary<int, string> _listTabs = new Dictionary<int, string>(); 在关闭程序之前,我想在设置中保存此词典: foreach(KeyValuePair kvp in _listTabs) { var property = new SettingsProperty(kvp.Key); prop

我正在尝试使用选项卡保存应用程序的设置。每个选项卡显示路径中的一些数据。我是这样存储的:

 private Dictionary<int, string> _listTabs = new Dictionary<int, string>();
在关闭程序之前,我想在设置中保存此词典:

foreach(KeyValuePair kvp in _listTabs)
{
  var property = new SettingsProperty(kvp.Key);
  property.DefaultValue = kvp.Value;
  Settings.Default.Properties.Add(property);
}
Settings.Defaut.Save();

但是,它不起作用。错误在哪里?

如果应用程序因某种原因失败,您需要告诉我们您看到的错误是什么

同样在上面的代码中,我看不到任何保存设置的方法

如果要在应用程序之间保留对用户设置的更改 在会话中,调用Save方法,如下代码所示:

Properties.Settings.Default.Save()

有关用户设置的更多信息,请查看,特别关注以下领域


一旦您确定这是可行的,请检查用户设置文件。显示设置保存到的位置

当我们在运行时创建新设置,添加到Properties集合并尝试保存它时,新设置实际上不会保存在user.config文件中

我面临同样的问题,并按如下方式解决:

  • 在设计时在设置中创建一个虚拟属性:这将确保创建user.config文件,并在其中保存设置。 现在,当我们调用Properties.Settings.Default.Save()时;默认提供程序“LocalFileSettingsProvider”将保存Settings.default.Properties集合中的所有属性,包括在运行时添加的属性
  • 您将看到在运行时添加到集合中的新属性保存在user.config文件中。但这里还有第二个问题,即尝试从user.config加载值的时间

    它将只加载设计时存在的设置值,而不考虑user.config中存在的其他属性

    我所做的修复是在Properties集合中再次添加具有某些默认值的属性,然后调用以下命令:

    2从user.config加载属性值

    设置提供程序提供程序= Properties.Settings.Default.Providers[“LocalFileSettingsProvider”]

    设置propertyValueCollection propertyValueCollection=provider.GetPropertyValues( Properties.Settings.Default.Context、Properties.Settings.Default.Properties)

    这将把user.config中的值加载到PropertyValues集合中,然后可以使用这些值


    希望对您有所帮助……

    我注意到您代码的最后一行是

    Settings.Defaut.Save();
    

    我相信有一个拼写错误
    Defaut
    应该是
    Default

    您是否通过调试器运行此操作?exe目录中是否有.config文件?是的,我正在通过调试器运行此文件。这也是exe目录中的MyApplication.exe.config
    Settings.Defaut.Save();