【发布时间】:2009-10-28 00:34:49
【问题描述】:
我认为 Reset() 方法会再次使用默认值重新填充设置,但似乎不是。如何使用默认值重新加载它们?
private void buttonLoadDefaultSettings_Click(object sender, EventArgs e)
{
FooSettings.Default.Reset();
// Data grid will show an empty grid after call to reset.
DataGridFoo.Rows.Clear();
foreach (SettingsPropertyValue spv in FooSettings.Default.PropertyValues)
{
DataGridFoo.Rows.Add(spv.Name, spv.PropertyValue);
}
}
更新
private void buttonLoadDefaultSettings_Click(object sender, EventArgs e)
{
foreach (SettingsProperty sp in FooSettings.Default.Properties)
{
FooSettings.Default[sp.Name.ToString()] = sp.DefaultValue;
}
DataGridFoo.Rows.Clear();
foreach (SettingsPropertyValue spv in FooSettings.Default.PropertyValues)
{
DataGridFoo.Rows.Add(spv.Name, spv.PropertyValue);
}
}
删除了对 Reset() 的调用并将属性值手动设置为默认存储的值。我仍然很想知道这是应该使用它还是我错过了什么?
【问题讨论】:
-
发生这种情况的原因是,无论出于何种原因,
PropertyValues集合不会在初始化时填充,而是会延迟到您第一次检索任何属性值。重置设置对象会重置所有内容,包括PropertyValues的初始 0 元素状态。请参阅标记的重复项。
标签: c# default-value reset applicationsettingsbase