.NET 6 WinForms运行时保存Settings报错及实现需求咨询
问题原因及解决方法
核心原因
报错SettingsPropertyNotFoundException本质是代码中引用的comPort属性未在Settings配置中正确定义,或定义后未同步到项目编译生成的Settings类中。常见触发场景:
- Settings.settings文件里未添加
comPort属性,或属性名拼写不一致(大小写敏感) - 添加属性后未重新生成项目,导致自动生成的
Settings.Designer.cs未更新 - 属性设置为
Application作用域(只读),但代码尝试修改
分步解决方法
1. 正确定义Settings属性
- 右键项目 → 「添加」→ 「新建项」→ 搜索并选择「设置文件」(若已存在Settings.settings,直接双击打开)
- 在Settings设计器中添加配置:
- 名称:
comPort(必须和代码中引用的名称完全一致) - 类型:
string - 范围:
User(仅User范围的设置支持运行时修改保存,Application范围为只读) - 默认值:可留空或填默认串口号
- 名称:
- 保存Settings.settings文件
2. 重新生成项目
点击顶部菜单「生成」→ 「重新生成解决方案」,确保自动生成的Properties/Settings.Designer.cs文件中包含comPort的属性定义。
3. 修正代码写法
不要用索引器方式赋值(易出现拼写错误),改用强类型属性,并必须调用Save()方法写入文件:
// 赋值 Properties.Settings.Default.comPort = cboComPorts.Text; // 保存到本地文件 Properties.Settings.Default.Save();
4. 排查特殊情况
如果以上步骤无效,检查以下点:
- 打开
Properties/Settings.Designer.cs,确认是否存在public string comPort { get; set; }的定义,若没有则删除该文件后重新生成项目 - 检查代码中是否误写了属性名(比如写成
ComPort而非comPort,索引器大小写敏感) - 若需要自定义设置文件路径,可直接使用
File.WriteAllText手动读写配置文件(比如JSON格式),示例:// 自定义配置路径(比如程序目录下的settings.json) string configPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "settings.json"); // 保存设置 var settings = new { comPort = cboComPorts.Text }; File.WriteAllText(configPath, JsonSerializer.Serialize(settings)); // 读取设置 if (File.Exists(configPath)) { var savedSettings = JsonSerializer.Deserialize<dynamic>(File.ReadAllText(configPath)); cboComPorts.Text = savedSettings.comPort; }
内容的提问来源于stack exchange,提问作者Martin Thompson
相关产品推荐
相关产品推荐

