某些属性的 DefaultValueAttribute 被移除

DefaultValueAttribute 已从依赖于默认字体高度的控件属性中删除。

已引入的版本

.NET 8

以前的行为

受影响的属性使用 DefaultValueAttribute修饰,默认值根据假定的应用程序范围的字体进行硬编码。

新行为

从 .NET 8 开始,该属性将从某些属性中删除。 设计时默认值是根据当前字体指标在启动时计算的。

更改类别

此更改是 行为变化

更改原因

DefaultValueAttribute 属性旨在定义 Windows 窗体设计器使用的常量默认值。 过去,此属性用于指定依赖于当前字体高度的某些属性的默认值。 .NET Core 3.1 中引入了新的默认字体,但属性值不会相应地更新。 此外,现在还有一个 API 来修改应用程序字体。 因此,使用动态默认值而不是常量默认值是有意义的。

设计师提供了指定动态默认值的方法,但是,对于用DefaultValueAttribute修饰的属性,它始终会使用常量默认值。 指定动态默认值的方法保留特性提供的设计时功能。

DefaultValueAttribute 适用于设计时方案,且专供内部使用。 不应在其他场景中使用它。

受影响的 API

下表列出了受影响的属性。

资产 更改版本
System.Windows.Forms.DataGridViewRow.Height 预览版 2
System.Windows.Forms.ListBox.ItemHeight 预览版 2