DefaultValueAttribute removed from some properties
DefaultValueAttribute has been removed from control properties that are dependent on the default font height.
Version introduced
.NET 8
Previous behavior
The affected properties were decorated with DefaultValueAttribute, and default values were hardcoded according to an assumed application-wide font.
New behavior
Starting in .NET 8, the attribute is removed from certain properties. Design-time default values are calculated at startup based on the current font metrics.
Change category
This change is a behavioral change.
Reason for change
The DefaultValueAttribute attribute is designed to define constant default values used by the Windows Forms designer. In the past, this attribute was used to specify defaults on certain properties that depend on the current font height. A new default font was introduced in .NET Core 3.1, but the attribute values weren't updated accordingly. Moreover, there's now an API to modify application font. Thus, it makes sense to use dynamic default values instead of constant ones.
The designer provides methods to specify dynamic default values, however, for properties decorated with DefaultValueAttribute, it always uses the constant default value instead. The methods for specifying dynamic defaults preserve the design-time functionality provided by the attribute.
Recommended action
DefaultValueAttribute is intended for internal use in design-time scenarios. You shouldn't use it in other scenarios.
Affected APIs
The following table lists the affected properties.
Property | Change version |
---|---|
System.Windows.Forms.DataGridViewRow.Height | Preview 2 |
System.Windows.Forms.ListBox.ItemHeight | Preview 2 |