【问题标题】:Automatically save user scope settings ON CHANGE in VB.NET在 VB.NET 中自动保存用户范围设置 ON CHANGE
【发布时间】:2018-04-26 02:20:01
【问题描述】:

我经常发现自己为用户范围设置这样做:

My.Settings.MySetting = MyValue My.Settings.Save()

当然,VB.NET 中的用户范围设置会在退出时自动保存,但如果发生意外终止或会话崩溃,保存更改仍然更安全。

我的问题:有没有一种我不知道的方法可以让设置的更改自动触发保存机制?

【问题讨论】:

  • 恰恰相反。在程序退出时保存设置会更安全。当更改的设置导致程序崩溃时,您想要这样做的方式可能会创建一个非常丑陋的场景。重新启动它会再次崩溃。一遍又一遍地。用户完全被卡住了,重新安装程序不会解决问题,他永远也找不到坏文件。如果您的程序经常崩溃,从而激发了这个 hack,请改为解决 那个 问题。
  • 通过My.Settings 暴露的对象有一个PropertyChanged 事件,您可以在那里处理和调用Save
  • @HansPassant 我不会将“保存更改”模型称为“黑客”。把它想象成一个“自动保存”功能。不,甚至远未接近“例行崩溃”。实际上,到目前为止,我在测试期间都无法回忆。无论如何,我最终选择了“退出时保存”路线,主要是因为它与“取消”功能配合得更好,在这种情况下,保存设置就没有意义了。

标签: vb.net winforms settings


【解决方案1】:

正如 jmcilhinney 所说:

Imports System.ComponentModel

Public Class Form1
    Private WithEvents MySettings As My.MySettings = My.Settings

    Private Sub MySettings_PropertyChanged(sender As Object, e As PropertyChangedEventArgs) Handles MySettings.PropertyChanged
        MySettings.Save()
    End Sub
End Class

如果您想知道更改了哪个设置,请使用e.PropertyName

【讨论】:

  • 我选择了“退出时保存”模型,但您的回答很有效。
猜你喜欢
  • 1970-01-01
  • 2018-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多