dotnet / winforms

Windows Forms is a .NET UI framework for building Windows desktop applications.
MIT License
4.38k stars 971 forks source link

[Multi-Monitor] PerMonitorV2 autoscale lead to wrong ClientSize. #12132

Open kirsan31 opened 2 weeks ago

kirsan31 commented 2 weeks ago

.NET version

8.0.7

Did it work in .NET Framework?

Not tested/verified

Did it work in any of the earlier releases of .NET Core or .NET 5+?

.Net 6 and 7 have same problem but difference is bigger. Can't test 9.0RC1 due to build error:

(ResolvePackageAssets target) -> C:\Program Files\dotnet\sdk\9.0.100-rc.1.24452.12\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(266,5): error NETSDK1060: Error reading assets file: Error loading lock file 'e:\Projects\Other\core tests\WinFormsPerMonitorV2\obj\project.assets.json' : Could not load file or assembly 'System.Text.Json, Version=8.0.0.4, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The system cannot find the file specified.

Issue description

PerMonitorV2 app.

And CLS1 != CLS2.

image

Steps to reproduce

WinFormsPerMonitorV2.zip

or

Tanya-Solyanik commented 4 days ago

@Olina-Zhang could you please find what PR in NET8 had regressed this behavior and if the quirks can help with this issue.

kirsan31 commented 4 days ago

@Tanya-Solyanik

@Olina-Zhang could you please find what PR in NET8 had regressed this behavior and if the quirks can help with this issue.

This is not regression from .Net6 (may be earlier?):

Did it work in any of the earlier releases of .NET Core or .NET 5+?

.Net 6 and 7 have same problem but difference is bigger. Can't test 9.0RC1 due to build error:

Tanya-Solyanik commented 4 days ago

@kirsan31 - we want to see what caused the bigger difference.

Philip-Wang01 commented 2 days ago

@Tanya-Solyanik This behavior is regression from: https://github.com/dotnet/winforms/pull/7973 and here are the test results. Somewhat strangely, when running the application multiple times, it is possible to get the same results as before. Please check out the video.

image

https://github.com/user-attachments/assets/dab2b830-33a3-45b5-a435-b8b9c7d0d0b6

kirsan31 commented 2 days ago

This behavior is regression from: #7973 and here are the test results.

Sorry but I still don't get why you call this regression. 🤷‍♂️ In .Net 8 it's become more accurate then before, but still not 100% accurate. Correct size with 125% dpi is 715x644; And I think that more accurate to use second test mechanics from my 1 post (to compare with 100% DPI settings (for that we know size that we set in designer 626x483)):

  • Change scale in windows settings to other then 100%.
  • launch app, change scale in windows settings to100%.
  • launch app again - compare ClientSize values.