添加新设置运行时

时间:2012-11-16 04:10:06

标签: c# .net settings

我正在尝试使用标签为我的应用程序保存设置。每个选项卡显示路径中的一些数据。我把它存储起来:

 private Dictionary<int, string> _listTabs = new Dictionary<int, string>();

当我创建新标签时,我在字典

中添加新项目
 _listTabs.Add(listTabs.Count++,CurrentPath);
在关闭程序之前

我想在设置中保存这个字典:

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

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

3 个答案:

答案 0 :(得分:1)

您需要告诉我们,如果应用程序由于某种原因失败,您会看到错误。

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

  

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

     

Properties.Settings.Default.Save();

有关用户设置的详细信息,请查看Using Settings in C#,特别关注Using Settings at Run Time的区域。

确定此功能后,请检查用户设置文件。 This Answer显示设置保存到的位置。

答案 1 :(得分:0)

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

我遇到了同样的问题并修改如下:

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

    它只会加载设计时出现的设置值,而与user.config中的其他属性无关。

    我为此做的修复是再次在Properties集合中添加具有某个默认值的属性,然后调用以下内容:

    2 从user.config加载属性值

    SettingsProvider provider =                     Properties.Settings.Default.Providers [ “LocalFileSettingsProvider”];

    SettingsPropertyValueCollection propertyValueCollection = provider.GetPropertyValues(                             Properties.Settings.Default.Context,Properties.Settings.Default.Properties);

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

    希望它有所帮助...

答案 2 :(得分:0)

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

Settings.Defaut.Save();

我相信有拼写错误。 Defaut应为Default