【问题标题】:Reset My.Settings to values last saved将 My.Settings 重置为上次保存的值
【发布时间】:2014-05-10 18:22:04
【问题描述】:

我目前正在使用“设置”表单为我的应用程序设置各种设置。我想要做的是将设置恢复到用户在打开和更改字段之前所做的任何更改之前。我有一个带有数据绑定到设置的文本框,当我进行更改并单击确定时,它会在我下次打开它时保存。当我点击取消时,它也会被保存。不太确定我是否正确地处理了这个问题。

Public Class frmSettings
    Private _mysettings As Configuration.SettingsBase

    Private Sub frmSettings_Load(...) Handles Me.Load
        _mysettings = My.Settings
    End Sub

    Private Sub btnCancel_Click(...) Handles btnCancel.Click
        For Each p As Configuration.SettingsPropertyValue In _mysettings.PropertyValues
            My.Settings(p.Name) = p.PropertyValue
        Next
        Me.Close()
    End Sub

    Private Sub btnOkay_Click(...) Handles btnOkay.Click
        My.Settings.Save()
        Me.Close()
    End Sub
End Class

【问题讨论】:

  • 并非没有,但根据您在下面的评论,序列化您的设置类是简化保存/加载的好方法。使用类中的数据,将其全部保存到 3 或 4 行的文件中,下次重新加载数据只需几行。无需读取值或将它们发布回 MySettings

标签: vb.net my.settings


【解决方案1】:

您可以在设置表单加载时简单地加载设置的值,而不是使用数据绑定控件。这样做很简单,而且很有效。否则,您将不得不克隆 My.Settings:执行 _mysettings = My.Settings 只是创建指向 My.Settings 的指针,而不是它的副本。

例如,我有一个名为 ChangeConnectionString 的表单,它具有确定/取消按钮和一个名为 connString 的 TextBox 控件:

Public Class ChangeConnectionString

    Private Sub bnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bnOK.Click
        My.Settings.connectionString = connString.Text
        My.Settings.Save()
        Me.Close()
    End Sub

    Private Sub bnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bnCancel.Click
        Me.Close()
    End Sub

    Private Sub ChangeConnectionString_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        connString.Text = My.Settings.connectionString
    End Sub

End Class

【讨论】:

  • 感谢安德鲁的回答。我最终做的是创建几个类来保存设置,并在表单加载时循环通过它来保存设置。然后,如果我取消,我会循环返回保存的设置并重置 My.Settings。我的设置页面有 30 多个设置,我试图节省一些空间。
猜你喜欢
  • 1970-01-01
  • 2012-08-14
  • 2018-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多