.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
相关产品推荐
相关产品推荐

