Vb.net 将我的设置重置为上次保存的值
我目前正在使用“设置”表单为我的应用程序设置各种设置。我试图做的是将设置恢复到用户在打开和更改字段之前所做的任何更改。我有一个文本框,其中的数据绑定到一个设置,当我进行更改并单击“确定”时,它将在下次打开时保存。当我点击cancel时,它也会被保存。不太确定我是否正确处理了这个问题Vb.net 将我的设置重置为上次保存的值,vb.net,my.settings,Vb.net,My.settings,我目前正在使用“设置”表单为我的应用程序设置各种设置。我试图做的是将设置恢复到用户在打开和更改字段之前所做的任何更改。我有一个文本框,其中的数据绑定到一个设置,当我进行更改并单击“确定”时,它将在下次打开时保存。当我点击cancel时,它也会被保存。不太确定我是否正确处理了这个问题 Public Class frmSettings Private _mysettings As Configuration.SettingsBase Private Sub frmSettings_
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
不使用数据绑定控件,只需在加载设置窗体时加载设置值即可。这样做很简单,而且很有效。否则,您必须克隆My.Settings:doing
\u mysettings=My.Settings
只创建指向My.Settings的指针,而不是它的副本
例如,我有一个名为ChangeConnectionString的表单,它有OK/Cancel按钮和一个名为connString的文本框控件:
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多个设置,我试图节省一些空间。这并非毫无意义,但根据您下面的评论,序列化设置类是简化保存/加载的一个好方法。当数据在类中时,以3或4行将其全部保存到一个文件中,下次重新加载数据的时间尽可能少。无需读取值或将其发回MySettings