| Dark Mode |
|
|
|
| #14283 |
System.Windows.Forms.LinkLabel |
Adds dark-mode link colors — bright blue LinkColor, light-red ActiveLinkColor, light-purple VisitedLinkColor — for readable contrast on dark backgrounds. |
Include. User-visible dark-mode contrast improvement for a common control. |
| #14317 |
System.Windows.Forms.ToolStripRenderer |
Inverts checked/indeterminate ToolStripMenuItem glyphs when Application.IsDarkModeEnabled, so check marks are visible on dark drop-downs (ContextMenuStrip, MenuStrip, StatusStrip, ToolStrip). |
Include. Fixes a clear dark-mode visibility defect across multiple menu/strip controls. |
| #14338 |
System.Windows.Forms.HelpProvider (Help) |
Sets HH_POPUP.clrForeground so the pop-up help bubble text color matches the WinForms theme, restoring readable text in dark mode. |
Include. Fixes a dark-mode regression where help text was barely visible. |
| #14381 |
System.Windows.Forms.ToolTip |
Adds dark-mode support to ToolTip so tooltips honor SystemColorMode.Dark. |
Include. Fixes a dark-mode regression; user-visible across all controls with tooltips. |
| #14504 |
System.Windows.Forms.TabControl |
In dark-mode child theming, skips applying the generic DarkMode_Explorer theme to nested TabControls, fixing TabControl → SplitContainer → TabControl hierarchies. |
Include. Fixes visible dark-mode inconsistency in nested container scenarios. |
| Rendering / Visual Styles |
|
|
|
| #14424 |
System.Windows.Forms.PrintPreviewControl |
Uses ForeColor directly in DrawMessage so an explicitly set White fore color renders as white instead of falling back to black. |
Include. Fixes a regression introduced in #13863; visible in designer and at runtime. |
| #14643 |
System.Windows.Forms.NumericUpDown (UpDownBase) |
Uses the modern renderer only in dark mode; restores themed and classic DrawScrollButton paths so up/down buttons render correctly when visual styles are disabled. |
Include. Fixes a rendering regression introduced by #13747. |
| #14672 |
System.Windows.Forms.PropertyGrid |
Fixes large-button image indexing in EnsureLargeButtons() so the Property Page icon is correct in HDPI after toggling LargeButtons from False to True. |
Include. Fixes a visible HDPI icon regression. |
| #14572 |
System.Windows.Forms.PropertyGrid |
Fixes copy-paste typo so ResetHelpForeColor resets the fore color instead of the back color. |
Borderline — can be omitted. The method is private with no call sites; no shipped behavior changes (per PR "Customer Impact: None"). |
| Stability / Exception Handling |
|
|
|
| #14537 |
System.Windows.Forms.ToolStripDropDownMenu |
Reverts #14490 and returns early when the last item is already shown, so clicking ToolStripScrollDownButton no longer throws. |
Include. Fixes a long-standing exception (#6650) that is user-reachable. |
| #14565 |
System.Windows.Forms.SplitContainer |
Wraps RepaintSplitterRect() GDI+ drawing in try/catch (ExternalException) to ignore transient failures during display-session (lock/unlock) transitions. |
Include. Eliminates intermittent "generic error occurred in GDI+" crash dialogs. |
| #14731 |
System.Windows.Forms.KeyboardToolTipStateMachine |
Replaces a thrown KeyNotFoundException with FullFsmReset() and adds a null check in Transit(), fixing crashes when Focus() is called during a ToolTip Popup event (re-entrant focus change). |
Include. Fixes an application crash triggered by focus re-entrance during tooltip display. |
| Input |
|
|
|
| #14691 |
System.Windows.Forms.SendKeys |
Passes modifier state by ref to AddSimpleKey so sequential immediate modifier sequences (^a^c, +a+c, %f%t) parse correctly instead of throwing. |
Include. Fixes a regression from #3621 affecting .NET Framework migration scenarios. |
| API Consistency |
|
|
|
| #14679 |
System.Windows.Forms.ListBox |
Overrides IsSynchronized to return false for SelectedIndexCollection and IntegerCollection, making all four ListBox collections consistent (fixes #3088). |
Include and flag as a potential breaking change. It alters a public property's return value; customer workarounds relying on the old value may break. See the Breaking Change Callout above. |
Milestone:
11.0-preview7Search query:
repo:dotnet/winforms is:pr is:merged milestone:"11.0-preview7" label:"releasenotes-candidate"Summary
^a^c,+a+c,%f%t) no longer throw; a real migration blocker for .NET Framework apps.IsSynchronizednow returnsfalseforListBox.SelectedIndexCollectionandIntegerCollection. This changes a public property's return value; customers who wrote workarounds relying on the previous value may see that behavior break.ToolStripMenuItemicons are now clearly visible in dark mode onContextMenuStrip,MenuStrip,StatusStripandToolStripdrop-down buttons. #14317 / Fix issue 14501: TabControl inside SplitContainer inside TabControl does not match dark mode #14504 — a broad set of Dark Mode polish fixes that noticeably improve the dark-theme experience across common controls.⚠ Breaking Change Callout
#14679 changes the value returned by
IsSynchronizedonListBox.SelectedIndexCollectionandListBox.IntegerCollection(nowfalse, for consistency with the other ListBox collections). Although the collections were never actually thread-safe, this is an observable change to a public property's return value. Customers who wrote workarounds that branch on the previousIsSynchronizedvalue may find that logic breaks. This should be documented in the release notes as a behavioral/breaking change, not just a bug fix.Detailed Results
LinkColor, light-redActiveLinkColor, light-purpleVisitedLinkColor— for readable contrast on dark backgrounds.ToolStripMenuItemglyphs whenApplication.IsDarkModeEnabled, so check marks are visible on dark drop-downs (ContextMenuStrip,MenuStrip,StatusStrip,ToolStrip).HH_POPUP.clrForegroundso the pop-up help bubble text color matches the WinForms theme, restoring readable text in dark mode.SystemColorMode.Dark.DarkMode_Explorertheme to nested TabControls, fixingTabControl → SplitContainer → TabControlhierarchies.ForeColordirectly inDrawMessageso an explicitly setWhitefore color renders as white instead of falling back to black.DrawScrollButtonpaths so up/down buttons render correctly when visual styles are disabled.EnsureLargeButtons()so the Property Page icon is correct in HDPI after togglingLargeButtonsfrom False to True.ResetHelpForeColorresets the fore color instead of the back color.ToolStripScrollDownButtonno longer throws.RepaintSplitterRect()GDI+ drawing intry/catch (ExternalException)to ignore transient failures during display-session (lock/unlock) transitions.KeyNotFoundExceptionwithFullFsmReset()and adds a null check inTransit(), fixing crashes whenFocus()is called during a ToolTipPopupevent (re-entrant focus change).reftoAddSimpleKeyso sequential immediate modifier sequences (^a^c,+a+c,%f%t) parse correctly instead of throwing.IsSynchronizedto returnfalseforSelectedIndexCollectionandIntegerCollection, making all four ListBox collections consistent (fixes #3088).Amendment: .NET 11 VisualStylesMode opt-in renderers
The following behavior is implemented behind the .NET 11
VisualStylesModeopt-in. It changes framework-defined rendering of existingFlatStylevalues; it does not add a settable theming surface.GroupBox FlatStyle behavior
StandardFlatPopupSystemBS_GROUPBOXBS_GROUPBOX; intentionally unchangedThe
Standardsurface movesDisplayRectangledown because its caption is above the body, aligns that caption toPadding, and reserves more content space above than below. Regular ambient fonts use a real installed Semibold face when available; otherwise their weight is preserved. This is the largest compatibility lever in the change. Metric changes are part of the VisualStylesMode opt-in contract, and AutoSize layouts remeasure through the VisualStylesMode change-impact dispatcher.ComboBox FlatStyle behavior
StandardFlatPopupSystemFlatStyle.Standardenters the WinForms adapter path under an effective Net11-or-later mode. All three modern styles add one logical pixel of framework inset on top of the now designer-visible publicPadding.DropDownStyle.Simpleremains an embedded composite control, while popup list HWNDs request small rounded corners on Windows 11.ToggleSwitch and FlatStyle.System
For a two-state CheckBox in an effective Net11-or-later mode,
Appearance.ToggleSwitchwins overFlatStyle.System. A native CheckBox cannot draw the requested toggle appearance, so WinForms uses the owner-drawn toggle renderer instead of silently ignoringAppearanceor throwing. EveryFlatStylexAppearancexVisualStylesModecombination is covered by a no-throw interaction matrix. See #14754.Expected Questions
Systemnot modernize? It means native rendering by contract; nativeBS_GROUPBOX/native combo cannot be restyled. Documented, not overlooked.DisplayRectangle? Metric changes are whatVisualStylesModeopt-in means; correct AutoSize layouts re-measure through the change-impact model; recorded as the change's biggest compat lever in the high-risk doc.