Windows 窗体过时和警告 (.NET 7)
从 .NET 7 开始,某些 Windows 窗体 API 标记为已过时。 其他 API 不会过时,但如果引用它们,会出现编译时警告。
旧行为
在以前的 .NET 版本中,可以使用这些 API,而不会引发任何生成警告。
新行为
在 .NET 7 及更高版本中,使用这些 API 会生成编译时警告或错误,并显示自定义诊断 ID。 使用自定义诊断 ID 可单独取消某个警告,而不是取消所有过时警告。
下表列出了自定义诊断 ID 及其相应的警告消息。
诊断 ID | 说明 | 严重性 | 引入的版本 |
---|---|---|---|
WFDEV001 | 强制转换到 IntPtr 或从中强制转换不安全。 请改用 WParamInternal 、LParamInternal 或 ResultInternal 。 |
警告 | 预览版 1 |
WFDEV002 | System.Windows.Forms.DomainUpDown.DomainUpDownAccessibleObject 不再用于为 DomainUpDown 控件提供可访问支持。 请改用 AccessibleObject。 | 警告 | RC 1 |
WFDEV003 | System.Windows.Forms.DomainUpDown.DomainItemAccessibleObject 不再用于为 DomainUpDown 项提供可访问支持。 请改用 AccessibleObject。 | 警告 | RC 1 |
引入的版本
.NET 7
中断性变更的类型
这种过时和警告可能会影响源兼容性。
建议操作
- 使用警告中提供的 URL 链接,遵循为每个诊断 ID 提供的特定指南。
- 如有必要,可以使用自定义
WFDEVxxx
诊断 ID 值取消警告。
受影响的 API
WFDEV001
- System.Windows.Forms.Message.WParam
- System.Windows.Forms.Message.LParam
- System.Windows.Forms.Message.Result