【发布时间】:2010-02-06 19:32:47
【问题描述】:
我知道可以使用Reset() 方法重置My.Settings。
有没有办法只为一个设置做同样的事情?或者简单地获取其默认值而不是用户更改的值。 (我指的是用户范围设置)
【问题讨论】:
标签: .net winforms settings application-settings
我知道可以使用Reset() 方法重置My.Settings。
有没有办法只为一个设置做同样的事情?或者简单地获取其默认值而不是用户更改的值。 (我指的是用户范围设置)
【问题讨论】:
标签: .net winforms settings application-settings
您无法重置一项设置。通过Properties 集合很容易得到默认值。具体来说,SettingsProperty 的 DefaultValue 属性。此外,PropertyValues 集合包含SettingsPropertyValue 对象,允许您通过IsDirty 或UsingDefaultValue 属性确定属性/设置是否已更改。
Dim a As Object = My.Settings.Properties.Item("fred").DefaultValue
Dim b As Boolean = My.Settings.PropertyValues.Item("fred").IsDirty
Dim c As Boolean = My.Settings.PropertyValues.Item("fred").UsingDefaultValue
我希望有一种无需指定设置名称即可获取这些值的方法。
【讨论】:
UsingDefaultValue 工作。无论我在代码中的哪个位置检查它,它总是错误的。 IsDirty 似乎工作正常。
StringCollection 类型设置,您无法将当前值与 DefaultValue 进行比较,因为后者是序列化的 XML 字符串,而前者被反序列化为集合/数组。
不确定是否只重置一个设置,但您可以将设置复制到另一个对象 Reset(),然后将除您要重置的设置值之外的所有设置值复制回来。
【讨论】: