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

.NET 6升级至.NET 7 Preview 6 WinForms中KeysConverter.ConvertFrom报错

.NET 7中KeysConverter转换单个字符键值报错的解决方案

你的代码在.NET 6中可正常运行,但升级到.NET 7后,KeysConverter.ConvertFrom("G")抛出KeyNotFoundException,提示"The given key 'G' was not present in the dictionary",这是因为.NET 7对KeysConverter的实现做了行为调整,不再支持直接传入单个字符字符串进行转换,并非框架Bug。

可行解决方案

  • 改用枚举解析方法替代KeysConverter
    这是最稳妥的方式,不受KeysConverter实现变更的影响,代码示例:

    string keysVal = "G";
    Keys myKeys;
    if (Enum.TryParse<Keys>(keysVal, out myKeys))
    {
        // 转换成功后的业务逻辑
    }
    // 若确定输入有效,也可直接使用Parse
    // myKeys = Enum.Parse<Keys>(keysVal);
    
  • 若坚持使用KeysConverter
    需要传入与Keys枚举成员完全匹配的名称字符串(部分功能键场景可能需包含修饰符前缀),但此方式依赖框架内部实现,稳定性不如枚举解析。

内容的提问来源于stack exchange,提问作者Chandra Arifin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:06:29