You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
Branch: KlausLoeffelmann/winforms @ 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)
Extend [NET11 new API] Visual Styles feature (postponed from .NET 9 and .NET 10) #14587's API Proposal with Microsoft.VisualBasic.ApplicationServices.ApplyApplicationDefaultsEventArgs.VisualStylesMode, completing the VB Application Framework wiring anticipated (but never finished) back in the .NET 9 Visual Styles attempt. (Issue text updated; branch implementation tracked above.)
Investigate a TreeView.FullRowSelect rendering regression noticed during Visual Styles exploration; file a dedicated bug issue if reproduced independent of these proposals. Investigated: no regression found on main or VisualStylesNet11 (no TreeView file differences between them); current best diagnosis is the long-standing, already-documented native constraint that FullRowSelect has no visual effect while ShowLines is true (the WinForms default). Filed as Investigate TreeView.FullRowSelect appearing ineffective KlausLoeffelmann/winforms#13 for further confirmation/follow-up, not treated as a regression from this batch of work.
VisualStylesNet11 ([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.
IntroduceKioskManagerComponent ([.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_Application_SystemTextSize ([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). 3 commits, 8/8 targeted tests passing.
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.
Overview
Tracking issue for the .NET 11 WinForms API proposals authored/updated in this batch. Each is its own
api-suggestionissue 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
Application.SystemTextSize- runtime awareness of the Accessibility text-scale setting #14583 -Application.SystemTextSize- runtime awareness of the Accessibility text-scale settingTreeView.NodeLeading- opt-in honest, text-scale-aware node-row height #14584 -TreeView.NodeLeading- opt-in, text-scale-aware node-row height (depends on [NET 11 API Proposal]Application.SystemTextSize- runtime awareness of the Accessibility text-scale setting #14583)ISupportSuspendPainting/ISupportSuspendRelocation,Form.FormRevealMode)KioskModeManagercomponentVisualStylesMode), postponed from .NET 9 and .NET 10Related, not part of this batch:
ApplicationDefaultsforApplicationand the VB Application Framework (the existingApplyApplicationDefaultsmechanism these proposals extend)DeferLocationChangebatch child-location API, split out of [.NET 11 API Proposal] Add APIs for performance improved, flicker-free WinForms UI mutation #14585 and postponedImplementation tracking
Each feature branch is tracked with three independent check-offs:
#14585 - Flicker-free UI mutation (
ISupportSuspendPainting/ISupportSuspendRelocation,Form.FormRevealMode)Branch:
KlausLoeffelmann/winforms@ImproveControlRendering(renamed fromImproveControlPositioningAndRenderingnow thatDeferLocationChangeis split out)#14587 - Visual Styles (
VisualStylesMode, modernButton/CheckBox/RadioButton,TextBoxBase.Padding)Branch:
KlausLoeffelmann/winforms@VisualStylesNet11#14586 -
KioskModeManagercomponentBranch:
KlausLoeffelmann/winforms@IntroduceKioskManagerComponent#14583 -
Application.SystemTextSize/SystemTextSizeAwarenessBranch:
KlausLoeffelmann/winforms@Net11Api_01_Application_SystemTextSize#14584 -
TreeView.NodeLeadingBranch:
KlausLoeffelmann/winforms@Net11Api_02_TreeView_NodeLeadingRefactoring / follow-up work tracked here
FormAppearanceMode->FormRevealMode(Inherit/Classic/Deferred); remove theDeferLocationChangesub-feature (now tracked separately, see [API Proposal] DeferLocationChange - batch child-control location changes (split from #14585, postponed) KlausLoeffelmann/winforms#12); changeSuspendPaintingScope/SuspendRelocationScopefromreadonly ref structtosealed class : IDisposable; makeISupportSuspendPainting/ISupportSuspendRelocationexplicit interface implementations onControlwith protected...Core()hooks instead of public virtual methods; addApplication.DefaultFormRevealMode/SetDefaultFormRevealMode/IsFormRevealDeferred. (Issue text updated; branch implementation tracked above.)Microsoft.VisualBasic.ApplicationServices.ApplyApplicationDefaultsEventArgs.VisualStylesMode, completing the VB Application Framework wiring anticipated (but never finished) back in the .NET 9 Visual Styles attempt. (Issue text updated; branch implementation tracked above.)Microsoft.VisualBasic.ApplicationServices.ApplyApplicationDefaultsEventArgs.FormRevealMode, following the sameColorMode/HighDpiModepattern already established in that class. (Issue text updated; branch implementation tracked above.)Application.SystemTextSize- runtime awareness of the Accessibility text-scale setting #14583, [NET11 API Proposal]TreeView.NodeLeading- opt-in honest, text-scale-aware node-row height #14584, [.NET 11 API Proposal] Add APIs for performance improved, flicker-free WinForms UI mutation #14585, [.NET 11 API Proposal] Introduce KioskModeManager component #14586, [NET11 new API] Visual Styles feature (postponed from .NET 9 and .NET 10) #14587 for consistency (hard-wrapped vs. single-line-per-paragraph source style - both render identically on github.com, but consistency helps terminal/CLI review).Application.SystemTextSize- runtime awareness of the Accessibility text-scale setting #14583's API Proposal code block (GetSystemTextSize()->SystemTextSizeproperty; invalidSetSystemTextSizeAwarenesssignature) before implementation started.TreeView.FullRowSelectrendering regression noticed during Visual Styles exploration; file a dedicated bug issue if reproduced independent of these proposals. Investigated: no regression found onmainorVisualStylesNet11(noTreeViewfile differences between them); current best diagnosis is the long-standing, already-documented native constraint thatFullRowSelecthas no visual effect whileShowLinesistrue(the WinForms default). Filed as Investigate TreeView.FullRowSelect appearing ineffective KlausLoeffelmann/winforms#13 for further confirmation/follow-up, not treated as a regression from this batch of work.Branch summaries (as implemented)
ImproveControlRendering([.NET 11 API Proposal] Add APIs for performance improved, flicker-free WinForms UI mutation #14585):FormRevealMode(Inherit/Classic/Deferred) as a realForm-level ambient property backed byPropertyStore, resolving throughApplication.DefaultFormRevealMode/IsFormRevealDeferred;SuspendPaintingScope/SuspendRelocationScopeassealed class : IDisposable(async-await-safe);ISupportSuspendPainting/ISupportSuspendRelocationas explicit interface implementations onControlwith protected...Core()override hooks;DeferLocationChangeremoved 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).VisualStylesNet11([NET11 new API] Visual Styles feature (postponed from .NET 9 and .NET 10) #14587): added the missingVisualStylesMode.LatestPreviewvalue; fixed a getter/setter coupling bug in the write-onceSetDefaultVisualStylesMode; gatedTextBoxBase.Paddingto stay inert without a Net11+ opt-in; completed the VB Application FrameworkVisualStylesModewiring. 3 commits.IntroduceKioskManagerComponent([.NET 11 API Proposal] Introduce KioskModeManager component #14586): fixedSite/ContainerControlauto-resolution semantics (including explicit-nullhandling),FullScreeninit-time deferral and dispose-time restore,WakeUpCommandparameter (wake-source string), replaced a staticSystemEventsdependency with form-local power/session observation, keyboard handling correctness, andISupportInitializeside-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_Application_SystemTextSize([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/staticSystemTextSizeChangedvia the leak-safeSystemEvents.UserPreferenceChangedarchitecture, plusForm.SystemTextSizeChangedvia each form's ownWM_SETTINGCHANGEhandling (mirroring the existing DPI-change architecture to avoid rooting hazards). 3 commits, 8/8 targeted tests passing.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.NodeLeadingwith the legacy/honestItemHeightsplit,TVS_NONEVENHEIGHT/handle-recreate wiring, Font/DPI-aware recompute, and full designer serialization support. 2 commits, allNodeLeadingtests passing.