在 .NET Winforms 应用程序中保存设置 [重复]

Posted

技术标签:

【中文标题】在 .NET Winforms 应用程序中保存设置 [重复]【英文标题】:Save Settings in a .NET Winforms Application [duplicate] 【发布时间】:2011-03-03 05:28:37 【问题描述】:

可能重复:What is the best way to store user settings for a .NET application?

我发现了很多非常不同的示例,说明如何从 Winforms 应用程序中保存应用程序设置(每个用户)。

我想在 c# 中执行此操作的正确方法非常简单,希望有人能启发我?

【问题讨论】:

What is the best way to store user settings for a .NET application? 可能重复(这必须是 .NET 标签中重复最多的问题之一...) 在 .Net 中保存设置的另一种方法是 Config4Net,它是 .Net 内置设置功能的替代方法。您还可以在运行时显示配置的 UI 以进行编辑,它可以节省您的时间,尤其是在为我们的应用程序创建设置表单时。 【参考方案1】:

在某些时候,答案归结为品味问题。我会说你最终会得到至少这些选项:

将其存储在注册表中,您拥有 HKEY_CURRENT_USER 键。它下的所有内容都是特定于用户的。当您想要存储一堆小的键值对时,这通常是首选。该系统的主要优点是您的设置很容易在多个不同的应用程序中找到和共享。要走这条路,你可以从here开始。 使用 .NET 应用程序设置,提供了在运行时访问您的设置的最简单方法。同样,它更适合用于小型数据的键值对。 IMO,这种方法的主要优点是它的简单性以及它使您能够使用一些 .NET 类作为值的事实(而不是强迫您将所有内容转换为更基本的类型)。要走这条路,你可以从here开始。 将其存储在用户数据文件夹中,这些文件夹通常隐藏在用户的配置文件目录下。当您要存储大量数据或任意数量的文件时,这是首选。这种方法的主要优点是您可以像处理任何文件一样操作数据(这也可能是一个缺点)。要走这条路,你可以从here开始。

【讨论】:

“使用 .NET 应用程序设置”链接现已损坏 如果在第二种方法中,您保存的设置在您的应用的每个版本之间丢失,请确保您在项目属性中启用了“嵌入默认清单”。没有清单 = 重置每个版本。【参考方案2】:

您可以使用 .NET 提供的设置基础结构。在项目的属性页面中,转到“设置”页面,然后定义您的设置。您可以将每个设置的范围定义为“应用程序”或“用户”。将自动生成一个类来从代码中访问这些设置。

要访问设置 Foo 和 Bar,请使用:

// Read settings
textBoxFoo.Text = Properties.Settings.Default.Foo;

// Write settings
Properties.Settings.Default.Bar = checkBoxBar.IsChecked;

// Save settings
Properties.Settings.Default.Save();

【讨论】:

有没有办法直接从您的代码中执行此操作?即您是否必须先在项目属性页面中预先设置这些? 是的,必须在 .settings 文件中预定义设置 我认为应用程序范围的设置不会被保存。 @JohanLarsson,他们确实不会。应用程序范围的设置不能在运行时更改,至少不能通过通常的方式;显然你可以直接写入 .config 文件,如果你有写权限的话。【参考方案3】:

我会使用Application Settings。这非常简单,并且会为您解决一些问题(例如在没有管理员权限的情况下无法对可能安装您的应用的文件夹进行写访问,这排除了直接使用 app.config 进行设置的可能性)。

【讨论】:

以上是关于在 .NET Winforms 应用程序中保存设置 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

c# winforms如何保存用户输入的数据

在 Winforms 中保存/恢复多个设置文件

在 vb.net winforms 中使用日期时间选择器保存日期时间时面临的问题

工具条 WinForms .Net Core 的问题

在WinForms中使用XML配置文件持久化数据(保存和恢复用户和应用程序数据)

在.NET(Winforms)中的表单中居中控件?