C# Application.Settings Save()不';t保存实例';s值(在本例中)

C# Application.Settings Save()不';t保存实例';s值(在本例中),c#,.net,winforms,application-settings,C#,.net,Winforms,Application Settings,我正在尝试在设置窗体上实现“重置设置”按钮。但是我不希望在用户同意之前提交它 因此,在重置设置之前,我会创建一份设置副本,如果用户单击“取消”,我会保存这些(“旧”)设置。问题是,它不起作用 代码如下: Settings s1 = Settings.Default; s1.Setting1 = "A"; s1.Save(); Settings s2 = Clone();//A method that clones the settings s2.Setting1 = "B"; s2.Reset(

我正在尝试在设置窗体上实现“重置设置”按钮。但是我不希望在用户同意之前提交它

因此,在重置设置之前,我会创建一份设置副本,如果用户单击“取消”,我会保存这些(“旧”)设置。问题是,它不起作用

代码如下:

Settings s1 = Settings.Default;
s1.Setting1 = "A";
s1.Save();
Settings s2 = Clone();//A method that clones the settings
s2.Setting1 = "B";
s2.Reset();
s1.Save();//Why doesn't this line work?
s1.Reload();//Without this line - the next line shows "A" . With this line, the next shows - "ABC" (-the origianl). Why?
Text = s1.Setting1;

(额外:我应该在用户每次更改设置副本时更改设置,并在确定后提交这些设置,还是应该忽略这些更改,直到用户单击“确定”-然后检查所有控件并将每个控件的值指定给正确的属性…或者其他方式?

如果这是WinForms或WPF,使用VS附带的应用程序设置绑定机制,这样您就不必显式打开/保存设置。相反,您可以将前端控件直接绑定到特定设置,它将自动为您读取/写入设置。若用户在对话框中按“取消”,只需调用
Settings.Reload()
,即可回滚


假设您要保存一个名为UserName(string)的设置,这样用户就不必每次都键入它。只需在设计器中单击文本框并转到属性窗口。在最顶部,您将看到(应用程序设置)属性。展开它,您将看到文本属性。单击它,然后从下拉列表中选择“新建”(或从列表中选择您的属性,如果您已经定义了它)。键入特性名称和默认值,然后单击“确定”。它将为您创建一个属性,并用该属性绑定文本框。你完了

嗯,我会选择后者。让用户确认操作后对设置所做的更改生效,因此单击“取消”只会重新加载当前设置,从而避免不必要的保存和重新加载操作。我在以前的评论中不清楚。我需要的是能够“重置”到默认选项,并具有回滚到用户当前设置的选项。我想我可以通过创建两个设置实例来做到这一点。但是不知何故,尽管这两个是分开的(如我的示例中所示,
Setting1
)-
Save()。