We may be talking about three different things here:
1.
handling a change in screen resolution: when your application is running: your application is not going to have "focus," and the standard EventHandlers, like SizeChanged (in WinForms) are not going to be called.
If you really want your running app to detect a change in screen resolution: the answers you need are here:[^].
It's hard for me to imagine a situation where screen resolution changes while an application is running (?) If you have to handle this (rare ?) case, I wonder what requires you to code for this.
2.
dealing with scaling and positioning of Form elements when the Form size is changed (while, obviously, your application is running).
The article that Johnny J. referred you to (deservedly upvoted) should give you some strong clues about how to roll-your-own re-sizing and re-positioning, using Panels.
I have not had the bad experience using Dock, and Anchor, that the author of the article that Johnny J. linked to describes with such "horror."
3.
detecting when your application starts the aspect ratio of the current display, and, if your layout is based on a different aspect ratio, adjusting all the controls ?
Of course a big reason many people changed to WPF is: you get automatic scaling for "free." On the other hand, since I don't use WPF, I would be interested to know if there is aspect/ratio correction if you change screen resolution while running a WPF application: I think I'll post a question on this on the WPF forum out of curiousity, but keep in mind that WPF is "history."
No way I'll pay US $200 for either of the third-party controls for WinForms described here :)
good luck, Bill