我正在尝试在设置表单上实现“重置设置”按钮。但是我不希望它在用户确定之前就已经提交了。
所以我在重置之前创建设置的副本,如果用户单击取消 - 我保存那些(“旧”)设置。麻烦 - 它不起作用。
以下是代码:
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;
(额外:我应该在用户每次更改设置时更改设置,并在确定后提交这些设置,或者我应该忽略更改,直到用户单击“确定” - 然后重温所有设置控件并将每个Control的值分配给正确的属性......或者可能是其他方式?)
答案 0 :(得分:1)
如果这是WinForms或WPF,请使用VS附带的应用程序设置绑定机制。这样您就不必明确打开/保存设置。而是将前端控件直接绑定到特定设置,它将自动为您读取/写入设置。如果用户在对话框中按“取消”,则只需调用Settings.Reload()
即可回滚。
假设您有一个名为UserName(字符串)的设置要保存,以便用户不必每次都输入它。只需在设计器中单击TextBox,然后转到“属性”窗口。在最顶部,您将看到(ApplicationSettings)属性。展开它,您应该看到文本属性。单击它,然后从下拉列表中选择“新建”(如果已经定义了属性,则从列表中选择属性)。键入属性名称和默认值,然后单击“确定”。它将为您创建一个属性,并将TextBox与此属性绑定。你已经完成了!