You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6 WinForms运行时保存Settings报错及实现需求咨询

问题原因及解决方法

核心原因

报错SettingsPropertyNotFoundException本质是代码中引用的comPort属性未在Settings配置中正确定义,或定义后未同步到项目编译生成的Settings类中。常见触发场景:

  • Settings.settings文件里未添加comPort属性,或属性名拼写不一致(大小写敏感)
  • 添加属性后未重新生成项目,导致自动生成的Settings.Designer.cs未更新
  • 属性设置为Application作用域(只读),但代码尝试修改

分步解决方法

1. 正确定义Settings属性

  1. 右键项目 → 「添加」→ 「新建项」→ 搜索并选择「设置文件」(若已存在Settings.settings,直接双击打开)
  2. 在Settings设计器中添加配置:
    • 名称:comPort(必须和代码中引用的名称完全一致)
    • 类型:string
    • 范围:User(仅User范围的设置支持运行时修改保存,Application范围为只读)
    • 默认值:可留空或填默认串口号
  3. 保存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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 20:57:18