我正在Visual Studio中编写Windows窗体应用程序,我有一个类型为string
的用户范围应用程序设置,它具有默认值,使用项目设计器的“设置”页面在设计时指定。
在我的应用程序中,我有一个对话框,用户可以将设置更改为自定义值。该对话框还有一个标有“使用默认值”的复选框。如果选中该框,我希望设置恢复为应用程序默认值。
我设法通过将其设置为当前默认值来“静态地”执行此操作:My.Settings.MyStringSetting = My.Settings.Properties.Item("MyStringSetting").DefaultValue
。但是,这并不理想,因为它并不持久。如果应用程序默认值由于更新而更改,则用户值仍将设置为旧的默认值。
我想知道是否有一种方法可以简单地从user.config文件中删除用户设置覆盖,就像My.Settings.Reset那样,但是对于这一个设置。因此即使应用程序默认值得到更新,检查“使用默认设置”也将成立。
这可能吗?
我不确定是否有办法从user.config
文件中完全删除一个settings-property。但是,解决此问题的一种方法是:
如果应用程序默认值由于更新而更改,则用户值仍将设置为旧的默认值。
..是做这样的事情:
UpgradeRequired
1的settings-property并将其默认值设置为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
1无论如何,你可能还需要它to handle upgrading the settings correctly。