C# 应用程序设置以及如何读取它们

C# application settings and how to read them

我想存储和读取一些用户可以更改的设置。我通过项目的属性按照 here 所述进行操作,但我看到还有一个名为“Settings.settings”的文件。这个文件是空的。不需要这个文件吗?我可以删除它吗?

我的另一个问题是如何读取设置。例如,我有一个名为“InitialSave”的布尔值设置。使用它会出现错误“运算符‘==’无法应用于 'object' 和 'bool' 类型的操作数”。我可以直接从设置中读取还是应该在启动时声明每个设置?

Properties.Settings.Default["InitialSave"] == true

您右键单击它并选择“打开方式...设置设计器”:

或者您获取项目的属性并单击左侧的“设置”。然后你看到这个:

您将一些设置和类型放入:

您在代码中写入 Properties.Settings.Default.,然后您会看到您的设置:

您可以读取和写入它们,作为您指定类型的属性

您甚至可以将它们绑定到控件:

切换控件刻度状态会改变 Proeprties.Settings.Default.IsMinimized

的值

注意:只有用户范围设置可以是 changed/saved。 App Scope 设置保存在 YourExeName.config 文件中,可以通过使用文本编辑器编辑文件来更改。用户范围设置保存在别处(在您的用户文件夹中)并且可以在运行时修改和保存以在下次程序启动时保留该值


编辑:

好的,所以你说你可以在两个地方打开Settings.settings;我无法通过以下步骤实现这一点(使用 .NET 核心,因为 Wolle 的回答声称核心不同;我也不支持该声明):

  • 新项目,.NET Core Winforms:

  • 转到项目..设置“该项目不包含设置文件,单击以创建一个”,等等:

  • 切换到项目属性中的另一个选项卡,例如:

  • 对click/Open settings.settings 文件。看到这个:

  • 尝试在项目属性中返回它,看到这个:

  • 添加一些设置:

  • 在代码中访问..

不幸的是,@Caius Jard 的回答有点过时,但这是 .NET Core 之前环境的首选方法。

对于当前的 .NET 5 框架,最有用的来源应该是 MSDN docs on configuration

如果您想将设置存储在文件中,请查看 file configuration provider

var appSettings = ConfigurationManager.AppSettings;

// read
var foo = appSettings["bar"];

// write
if (settings[key] == null)  
{  
    settings.Add(key, value);  
}  
else  
{  
    settings[key].Value = value;  
}