Fix issue 15031: Disable NET11 VisualStylesMode for composite controls (ToolStrip, DataGridView, etc.) until NET11 layout modernization is completed - #15033
Conversation
…s (ToolStrip, DataGridView, etc.) until NET11 layout modernization is completed
There was a problem hiding this comment.
🟡 Changes recommended
The current OnParentVisualStylesModeChanged early-return path can suppress propagation/notifications when removing a local VisualStylesMode value changes the effective mode under coercion.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Disables modern VisualStylesMode rendering for composite controls (currently ToolStrip and DataGridView) by coercing Net11/Latest requests to Classic, and adds unit tests to lock in the expected effective-mode behavior and eventing.
Changes:
- Add per-control coercion hook (
GetSupportedVisualStylesMode) and override it inToolStrip/DataGridViewto forceClassicforNet11and newer modes. - Adjust
Controlvisual-styles inheritance / transition plumbing to account for coercion when determining effective-mode changes. - Add unit tests validating
ToolStrip/DataGridVieweffective mode isClassicunder modern requests and that parent modern-mode transitions do not raiseVisualStylesModeChangedwhen effective mode is unchanged.
File summaries
| File | Description |
|---|---|
| src/System.Windows.Forms/System/Windows/Forms/Control.cs | Adds supported-mode coercion hook and updates inheritance/transition logic to respect coerced effective modes. |
| src/System.Windows.Forms/System/Windows/Forms/Controls/ToolStrips/ToolStrip.cs | Forces Net11/Latest requests to use Classic effective visual styles mode. |
| src/System.Windows.Forms/System/Windows/Forms/Controls/DataGridView/DataGridView.cs | Forces Net11/Latest requests to use Classic effective visual styles mode. |
| src/test/unit/System.Windows.Forms/System/Windows/Forms/ToolStripTests.cs | Adds tests ensuring modern requests result in Classic effective mode and no spurious change events. |
| src/test/unit/System.Windows.Forms/System/Windows/Forms/DataGridViewTests.cs | Adds tests ensuring modern requests result in Classic effective mode and no spurious change events. |
Review details
- Files reviewed: 5/5 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Codecov Report✅ All modified and coverable lines are covered by tests.
Additional details and impacted files@@ Coverage Diff @@
## main #15033 +/- ##
====================================================
- Coverage 77.31435% 37.24166% -40.07269%
====================================================
Files 3265 246 -3019
Lines 644447 9774 -634673
Branches 47631 1029 -46602
====================================================
- Hits 498250 3640 -494610
+ Misses 142509 5970 -136539
+ Partials 3688 164 -3524
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
|
@LeafShi1, @SimonZhao888, @ricardobossan ... and also everybody else - just asking: Should we quirk that with an AppContext switch? |
KlausLoeffelmann
left a comment
There was a problem hiding this comment.
Yes!!
Can't wait to see this live!!
Thanks a lot!
Did you misread that PR draft? It likely still needs further revision. |
Fixes #15031
Proposed changes
Customer Impact
Regression?
Risk
Screenshots
Before
After
Test methodology
Accessibility testing
Test environment(s)
Microsoft Reviewers: Open in CodeFlow