【发布时间】:2010-02-19 02:04:27
【问题描述】:
在 C# (vs2005) 中使用“重置为默认值”功能实现“程序选项”对话框的最佳方法是什么?
下面是我的做法。
- 创建一个对话框并添加一些控件(如复选框)。还要添加三个按钮:确定、取消、默认。
- 创建设置文件并在用户范围内添加一些字段。
- 通过 Visual Studio 属性对话框中的“应用程序设置”属性将对话框控件与相应的设置字段绑定。
-
在所有者表单中添加一些代码:
if (myDialog.ShowDialog(this) == DialogResult.OK)
{
MySettings.Default.Save();
}
其他
{
MySettings.Default.Reload();
} -
在对话框窗体的 DefaultButtonClick 事件中添加以下行:
MySettings.Default.Reset();
注意: Save()、Reload()、Reset() 是 ApplicationSettingsBase 类的常用 .Net 函数。对此的详细解释可见http://www.codeproject.com/KB/dotnet/user_settings.aspx(感谢BillW提供链接)。
这段代码完美运行,保存和恢复用户设置没有问题,但是“重置为默认”功能与我在许多流行软件中看到的不同。在我的实现中,“重置”无法取消(因为 Settings.Default.Reset() 无法恢复),但是如果您看到一些流行程序的选项对话框(例如,Windows 资源管理器中的“文件夹选项”),请重置可以按取消按钮取消。
那么,实现“重置”功能的“传统”方式的最佳且简单的方法是什么?
更新(可能是最佳答案)
目前我已经通过以下方式解决了这个问题。而不是
MySettings.Default.Reset();
无法恢复,我直接读取默认值是这样的:
MySettings.Default.MyBoolValue = bool.Parse((string)MySettings.Default.Properties["MyBoolValue "].DefaultValue);
现在一切都按照我想要的方式工作,但实际上我觉得这段代码有点脏,因为我需要为每个变量单独执行此操作,执行类型转换等等。如果有人知道更好的简单解决方案,请在此处发布。
【问题讨论】:
-
VS2005中的Windows应用项目
-
Zenya,欢迎来到 StackOverflow。我是否建议您尝试尽可能具体地回答具体问题,以便在此处获得最佳响应。您的问题可能与 WPF 项目有关,其中“绑定”的含义可能与 WinForms 中的含义截然不同。祝你好运,
-
谢谢!之前对 WPF 几乎一无所知。当然,这是 WinForms 项目。
-
啊,知道您正在使用 ApplicationSettingsBase 类在这里有很大的不同,如果我知道这一点,我不会像以前那样回答您的问题。鉴于我们现在所知道的,我基于假设它不是“焦点”而删除了我的答案。这篇关于代码项目的文章,2009 年 3 月更新,可能对您有所帮助: Jani Giannoudis 的“应用用户设置” codeproject.com/KB/dotnet/user_settings.aspx 我们都在这里学习,在 StackOverFlow 上,没有任何问题我们的问题和答案都通过来回“完善”。祝你好运,
-
感谢您的链接。很高兴看到我对 ApplicationSettings 类的理解是正确的。我也确信使用这个类来保存和恢复用户选项是很常见的,每个人都知道。这就是为什么我没有在问题正文中做太多解释的原因。虽然我的问题不是这是如何工作的,而是人们通常会做什么来重置用户选项。无论如何,现在我对我提出的解决方案感到满意。
标签: c# visual-studio-2005 settings