.NET Core 6 C#读取Settings.settings配置问题求助
读写VS2022中Settings.settings创建的用户设置的正确方法
你之前用ConfigurationManager["FormTop"]读取失败,是因为通过Settings.settings界面添加的用户设置,默认会生成强类型的Settings类,而非直接暴露在ConfigurationManager的根集合中。以下是正确的读写方式:
一、读取用户设置
直接使用自动生成的Properties.Settings.Default对象访问,这是最简便且类型安全的方式:
// 读取FormTop设置 int iFormTop = Properties.Settings.Default.FormTop;
二、写入用户设置(仅针对User范围的设置)
注意:Settings.settings里的设置分为App范围和User范围,App范围的设置是只读的,编译后无法修改;只有User范围的设置支持读写。
修改并保存User范围设置的代码:
// 修改FormTop的值 Properties.Settings.Default.FormTop = 150; // 将修改保存到用户专属的配置文件(而非原App.Config) Properties.Settings.Default.Save();
调用Save()后,设置会被保存到当前用户的%appdata%\[你的应用名]目录下的配置文件中,下次启动程序时会自动加载修改后的值。
可选:用ConfigurationManager读取(不推荐)
如果一定要通过ConfigurationManager读取User范围的设置,需要定位到<userSettings>节点下的对应配置,步骤较繁琐:
// 打开当前程序的用户级配置文件 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal); // 获取userSettings节点下的专属设置节 UserSettingsSection userSettingsSection = (UserSettingsSection)config.GetSection("userSettings/MissingSamplesGUI.Properties.Settings"); // 找到FormTop设置项 SettingElement formTopSetting = userSettingsSection.Settings.Get("FormTop"); // 解析值 int iFormTop = int.Parse(formTopSetting.Value.ValueXml.InnerText);
这种方式需要手动处理类型转换,不如强类型的Settings类便捷,除非有特殊需求,否则不建议使用。
内容的提问来源于stack exchange,提问作者Lee
相关产品推荐
相关产品推荐

