Skip to content

[Epic] .NET 11 new WinForms API surface (accessibility-driven) #14694

Description

@KlausLoeffelmann

Overview

Tracking issue for the .NET 11 WinForms API proposals authored/updated in this batch. Each is its own api-suggestion issue and stands on its own for API review; this issue exists to keep them visible as a related cluster and to track implementation status and cross-cutting follow-up work.

API proposals in this batch

Related, not part of this batch:

Implementation tracking

Each feature branch is tracked with three independent check-offs:

  1. Branch Implemented - the branch matches the current, agreed API shape in the linked issue and builds/tests cleanly.
  2. Klaus Test-App Approval - exercised through the shared exploratory test app and Klaus is satisfied with the runtime behavior.
  3. WinForms Team Testing - Olina or Leaf (Beyondsoft) have tested and signed off.

#14585 - Flicker-free UI mutation (ISupportSuspendPainting/ISupportSuspendRelocation, Form.FormRevealMode)

Branch: KlausLoeffelmann/winforms @ Net11Api_03_ImproveControlRendering (renamed from ImproveControlPositioningAndRendering now that DeferLocationChange is split out)

  • Branch Implemented
  • Klaus Test-App Approval
  • WinForms Team Testing

#14587 - Visual Styles (VisualStylesMode, modern Button/CheckBox/RadioButton, TextBoxBase.Padding)

Branch: KlausLoeffelmann/winforms @ Net11Api_05_VisualStylesMode

  • Branch Implemented
  • Klaus Test-App Approval
  • WinForms Team Testing

#14586 - KioskModeManager component

Branch: KlausLoeffelmann/winforms @ Net11Api_04_KioskManagerComponent

  • Branch Implemented
  • Klaus Test-App Approval
  • WinForms Team Testing

#14583 - Application.SystemTextSize / SystemTextSizeAwareness

Branch: KlausLoeffelmann/winforms @ Net11Api_01_New_Application_Api

  • Branch Implemented
  • Klaus Test-App Approval
  • WinForms Team Testing

#14584 - TreeView.NodeLeading

Branch: KlausLoeffelmann/winforms @ Net11Api_02_TreeView_NodeLeading

  • Branch Implemented
  • Klaus Test-App Approval
  • WinForms Team Testing

Refactoring / follow-up work tracked here

Branch summaries (as implemented)

  • Net11Api_03_ImproveControlRendering ([.NET 11 API Proposal] Add APIs for performance improved, flicker-free WinForms UI mutation #14585): FormRevealMode (Inherit/Classic/Deferred) as a real Form-level ambient property backed by PropertyStore, resolving through Application.DefaultFormRevealMode/IsFormRevealDeferred; SuspendPaintingScope/SuspendRelocationScope as sealed class : IDisposable (async-await-safe); ISupportSuspendPainting/ISupportSuspendRelocation as explicit interface implementations on Control with protected ...Core() override hooks; DeferLocationChange removed entirely (see [API Proposal] DeferLocationChange - batch child-control location changes (split from #14585, postponed) KlausLoeffelmann/winforms#12). VB Application Framework wiring included. 3 commits, full targeted test pass (only a single pre-existing, unrelated DPI test failure reproduced independent of these changes).
  • Net11Api_05_VisualStylesMode ([NET11 new API] Visual Styles feature (postponed from .NET 9 and .NET 10) #14587): added the missing VisualStylesMode.LatestPreview value; fixed a getter/setter coupling bug in the write-once SetDefaultVisualStylesMode; gated TextBoxBase.Padding to stay inert without a Net11+ opt-in; completed the VB Application Framework VisualStylesMode wiring. 3 commits.
  • Net11Api_04_KioskManagerComponent ([.NET 11 API Proposal] Introduce KioskModeManager component #14586): fixed Site/ContainerControl auto-resolution semantics (including explicit-null handling), FullScreen init-time deferral and dispose-time restore, WakeUpCommand parameter (wake-source string), replaced a static SystemEvents dependency with form-local power/session observation, keyboard handling correctness, and ISupportInitialize side-effect deferral. 2 commits, 49/49 targeted tests passing. Confirmed as one of the lower-risk branches in this batch, per the original working hypothesis.
  • Net11Api_01_New_Application_Api ([NET 11 API Proposal] Application.SystemTextSize - runtime awareness of the Accessibility text-scale setting #14583): full implementation from scratch (branch previously had only the drafting prompt) - Application.SystemTextSize/SystemTextSizeAwareness/SetSystemTextSizeAwareness/static SystemTextSizeChanged via the leak-safe SystemEvents.UserPreferenceChanged architecture, plus Form.SystemTextSizeChanged via each form's own WM_SETTINGCHANGE handling (mirroring the existing DPI-change architecture to avoid rooting hazards). Now also adds Application.GetWindowsAccentColor() (WinRT UISettings accent color via a hand-authored IUISettings3 ABI in Microsoft.Private.Windows.Core, no CsWinRT dependency; returns the OS default accent color when none is set), broadening the branch into the general "new Application API" bucket.
  • Net11Api_02_TreeView_NodeLeading ([NET11 API Proposal] TreeView.NodeLeading - opt-in honest, text-scale-aware node-row height #14584): full implementation from scratch (new branch, none existed previously) - TreeView.NodeLeading with the legacy/honest ItemHeight split, TVS_NONEVENHEIGHT/handle-recreate wiring, Font/DPI-aware recompute, and full designer serialization support. 2 commits, all NodeLeading tests passing.

Metadata

Metadata

Labels

epicGroups multiple user stories. Can be grouped under a theme.

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions