I have a .NET 2.0 application that runs on Compact Framework. It has a bunch of different forms that were all originally designed to run on a specific device with a specific screen resolution. I’m now looking to get this application to run on some other devices that have very different screen resolutions (some have completely opposite aspect ratios where the screen is now taller than it is wide). My question is how can I change my forms to look good on these other screens?
This is a bit different from designing forms on the full framework since I have to design these forms to take up the full screen since the screens are so small. I’ve thought about creating separate forms for each type of screen orientation (e.g. MyForm_Wide.cs, MyForm_Tall.cs, etc). I’d like to be able to reuse the non-designer generated code that contains a lot of business logic that is tied to the UI controls. Maybe I could somehow use partial classes to make this happen (e.g. MyForm.cs somehow gets compiled into MyForm_Wide.Designer.cs, etc). I’d really like to avoid specifically compiled versions for each screen orientation. Another approach I’ve thought about is trying to rearrange some controls at runtime based on the determined screen size.
What do you guys think?
I think I’ve figured out what I want to do. For some reason even on my high res devices the DPI still shows up as 96 according to the WinForms API so the auto scaling isn’t doing anything. Instead, if I manually call
Scaleon my controls I get them to scale out exactly how I want. Now, this doesn’t completely solve my problem in scenarios where I don’t want to do any scaling but I do want to reorganize my controls if the screen is in the opposite aspect ratio than what I originally designed for. For that case, I think I’m going to look at using different layout panels (e.g.FlowLayoutPanelandTableLayoutPanel) to hopefully organize the controls appropriately.Hopefully this will help any future Googler…