Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#应用程序设置和如何读取_C#_Winforms_Application Settings - Fatal编程技术网

C#应用程序设置和如何读取

C#应用程序设置和如何读取,c#,winforms,application-settings,C#,Winforms,Application Settings,我想存储和读取一些用户可以更改的设置。我通过项目的属性遵循了前面提到的方法,但是我看到还有一个名为“Settings.Settings”的文件。这个文件是空的。这个文件不需要吗?我可以删除它吗 我的另一个问题是如何读取设置。例如,我有一个名为“InitialSave”的布尔设置。使用此选项会导致错误“运算符”==”无法应用于“object”和“bool”类型的操作数。我可以直接从设置中读取,还是应该在启动时声明每个设置 Properties.Settings.Default["Init

我想存储和读取一些用户可以更改的设置。我通过项目的属性遵循了前面提到的方法,但是我看到还有一个名为“Settings.Settings”的文件。这个文件是空的。这个文件不需要吗?我可以删除它吗

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

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

右键单击此项并选择“使用..设置设计器打开”:

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

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

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

可以将它们作为指定类型的属性进行读写

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

切换控件勾选状态将改变
proeprities.Settings.Default.IsMinimized

注意:只能更改/保存用户范围的设置。应用程序范围设置保存在YourExeName.config文件中,并通过使用文本编辑器编辑该文件进行更改。用户范围设置保存在其他位置(在用户文件夹中),可以在运行时修改和保存,以便在下次启动程序时保留该值


编辑: 好的,你说你可以在两个地方打开设置;我无法通过以下步骤实现这一点(使用.NET core,因为Wolle的答案声称core不同;我也无法支持该说法):

  • 新项目.NET核心Winforms:

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

  • 切换到项目属性中的其他选项卡,例如:

  • 右键单击/打开
    settings.settings
    文件。见此:

  • 尝试在“项目属性”中返回,请参见以下内容:

  • 添加一些设置:

  • 在代码中访问它

不幸的是,@Caius Jard的答案有点过时,但是对于.NET之前的核心环境来说,这是一条必经之路

对于当前的.NET5框架,最有用的源代码应该是

如果要将设置存储在文件中,请查看


谢谢那么Settings.Settings和项目属性下的Settings选项卡之间有什么区别呢?没有区别。事实上,如果你像我描述的那样用右键点击打开它,然后尝试通过project Proeprities打开它,你会得到一个错误“这已经在其他地方打开了”。嗯,就是这样。事实并非如此。我可以打开Setting.settings并打开项目属性下的“设置”选项卡。在属性下已经有一个DatabaseConnectionString。这不会显示在Settings.Settings中。所以他们看起来不一样,有点不对劲。请用新项目再试一次。请参阅对我的答案的编辑也适用于WinForms.NET core(请参阅对我的答案的编辑)
var appSettings = ConfigurationManager.AppSettings;

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

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