我正在Visual Studio中编写Windows窗体应用程序,并且我拥有类型为string
的用户范围应用程序设置,该设置具有默认值,该默认值是在设计时使用项目设计器的“设置”指定的“页面。
在我的应用程序中,我有一个对话框,用户可以在其中将设置更改为自定义值。该对话框还具有一个标记为“使用默认值”的复选框。如果选中该框,则我希望该设置恢复为应用程序默认值。
我设法通过将其设置为当前默认值来“静态地”执行此操作,例如:My.Settings.MyStringSetting = My.Settings.Properties.Item("MyStringSetting").DefaultValue
。但是,这不是理想的,因为它不是持久的。如果应用程序默认值由于更新而更改,则用户值仍将设置为旧的默认值。
我想知道是否有一种方法可以像My.Settings.Reset一样从user.config文件中完全删除用户设置替代,但是对于这一单个设置。这样,即使应用程序默认值已更新,选中“使用默认设置”也将保留为真。
这可能吗?
答案 0 :(得分:0)
我不确定是否有办法从user.config
文件中完全删除一项设置属性。但是,解决此问题的一种方法:
如果应用程序默认值由于更新而更改,则用户值仍将设置为旧的默认值。
..要做这样的事情:
UpgradeRequired
1 的设置属性,并将其默认值设置为True
。Checked
状态(如果尚未使用)。对于此演示,我将其称为UseMyStringSettingDefaultValue
。当您有软件更新时,UpgradeRequired
在默认情况下为True
(假设程序集版本已更改)。因此,在您的应用程序启动时执行以下代码:
If My.Settings.UpgradeRequired Then
My.Settings.Upgrade()
My.Settings.UpgradeRequired = False
If My.Settings.UseMyStringSettingDefaultValue Then
My.Settings.MyStringSetting = ' The new default value ↴
My.Settings.Properties.Item("MyStringSetting").DefaultValue.ToString()
End If
My.Settings.Save()
End If