It is important that you do not specify the coordinates and pixel sizes. This eliminates the use of Control.Top and Control.Left , which the designer does when you simply place controls on the form.
To get a user interface that works with various DPI settings, almost everything needs to be dynamic. Controls must have Control.AutoSize . But just turning on AutoSize completely ruin your layout, since the control position would still be fixed.
To dynamically position controls, you can use container controls such as FlowLayoutPanel and TableLayoutPanel (with dimensions set to AutoSize ). The usual controls inside them will then simply move around in shape in accordance with automatically determined sizes.
As you can see, this is not easy, it takes a little experience to get it right, and it requires a lot of testing (virtual machines with different DPI settings work fine). But I think that this must be done, as it always annoys me if something looks stupid and buggies on my laptop.
source share