0

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

 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();

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

4

3 回答 3

1

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

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

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

Properties.Settings.Default.Save();

有关用户设置的更多信息,请查看在 C# 中使用设置,特别关注在运行时使用设置区域。

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

于 2012-11-16T05:11:31.773 回答
0

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

我遇到了同样的问题并将其修复如下:

  1. 在设计时在设置中创建一个虚拟属性:这将确保将创建 user.config 文件并将设置保存在其中。现在当我们调用 Properties.Settings.Default.Save(); 默认提供程序“LocalFileSettingsProvider”会将所有属性保存在 Settings.Default.Properties 集合中,包括在运行时添加的集合。

您将看到在运行时添加到集合中的新属性正在保存在 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 集合中,然后可以使用这些值。

希望能帮助到你...

于 2013-10-02T10:55:34.557 回答
0

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

Settings.Defaut.Save();

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

于 2018-03-12T06:23:45.310 回答