Is there a quick way to resize forms and controls?!

Posted on 2010-08-24
Last Modified: 2012-06-21
We have an big software made in WinForm VB 2008 designed with 1280X1024 forms. Previous version of our software worked on 1024X768 screens. Now, we are upgrading those clients with the newer version, but the touch-screen (it's an embedded industrial computer) does not support 1280X1024 resolution (it's something we all missed before giving the go-ahead for the upgrade). So, we have to resize all the forms and controls, and spacing between each controls, to fit the 1280 interface into 1024.

We decided to make a new version and copy/paste all control and code and manually resize the whole things (there are a lot of forms and controls...) which will take very much time. Ideally, we should have a single version that support both resolutions, as maintenance of both versions will quickly become a nightmare.

Anyone have an idea of how we could automatically resize forms and controls, depending of the resolution? Getting the best resolution of the graphic card is not a problem, it's the resizing of forms and controls that give us headache...

thanks for your time and help
Question by:Dominic34
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
LVL 20

Accepted Solution

alainbryden earned 500 total points
ID: 33510375
I've always made my controls re-sizable to any resolution simply by implementing the form_resize event. Instead of using fixed positions, calculate them in this event. Don't assign Top, Width, Height, etc constant values - use a series of formula to calculate how much space is available, and what their respective positions should be relative to each other.

It will take a little effort this first time, since you're overhauling the UI layout, but after that you'll never have to worry about resolution problems again.

I've attached an example.

Const ListboxPadding = 1
Const ButtonPadding = 3
Const MinHeight = 100
Const MinWidth = 520

Private Sub UserForm_Resize()
    With ButtonSearchBasic
        .Top = Me.InsideHeight - ButtonPadding * 2 - .Height
    End With
    With ButtonSearch1
        .Top = Me.InsideHeight - ButtonPadding * 2 - .Height
    End With
    With ButtonSearch2
        .Top = Me.InsideHeight - ButtonPadding * 2 - .Height
    End With
    With ButtonExit
        .Top = Me.InsideHeight - ButtonPadding - .Height
        .Left = Me.InsideWidth - ButtonPadding - .Width
    End With
    With ButtonFillOverwrite
        .Top = Me.InsideHeight - ButtonPadding - .Height
        .Left = Me.InsideWidth - ButtonPadding * 4 - .Width - ButtonExit.Width
    End With
    With ButtonFillEmpty
        .Top = Me.InsideHeight - ButtonPadding - .Height
        .Left = Me.InsideWidth - ButtonPadding * 6 - .Width - ButtonFillOverwrite.Width - ButtonExit.Width
    End With
    With ResizeGrab
        .Left = Me.InsideWidth - .Width
        .Top = Me.InsideHeight - .Height
    End With
    With ResultList
        .Top = ListboxPadding
        .Left = ListboxPadding
        .Height = Me.InsideHeight - 2 * ButtonPadding - ButtonExit.Height - .Top
        .Width = Me.InsideWidth - .Left - ListboxPadding
    End With
End Sub

Open in new window

LVL 22

Expert Comment

ID: 33510404
There really isnt much that you can do. Thats one of those design flaws that happens in developement. Its always wiser to make the sizes universal and allow the user to size the screen themselves once the executable is launched. this is why we have scrolling bars and form controls set so the user can size the application themselves :(

Take this as a lesson learend and call up the original developers and make them do the transition. Save both copies for future code changes.

Heres some more light readon on the subject

LVL 20

Expert Comment

ID: 33510413
This is just a separate thought - but if you want something real quick, you should give this a shot:

Detect the resolution (available width and height), then try looping over all controls on the form and multiplying their top, left, width and height by a constant ratio equal to the expected resolution over the actual resolution.

I think I did this once, so I'm going to try and track down the code. Hang tight.
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!


Expert Comment

ID: 33510482
This article was helpful for me. Docking controls, and only resizing the panels. Kinda like a flowLayout.

Author Comment

ID: 33510733
alainbryden, really interesting. What is the Me.InsideHeight variable is your example?
LVL 20

Expert Comment

ID: 33512096
Me refers to the form itself, and InsideHeight refers to the area of the form that controls can occupy (i.e. doesn't include the window title and frame dimensions.

Featured Post

Revamp Your Training Process

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Article by: Kraeven
Introduction Remote Share is a simple remote sharing tool, enabling you to see, add and remove remote or local shares. The application is written in VB.NET targeting the .NET framework 2.0. The source code and the compiled programs have been in…
1.0 - Introduction Converting Visual Basic 6.0 (VB6) to Visual Basic 2008+ (VB.NET). If ever there was a subject full of murkiness and bad decisions, it is this one!   The first problem seems to be that people considering this task of converting…
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor ( Top Charts is a view in which you can set seve…
Monitoring a network: how to monitor network services and why? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the philosophy behind service monitoring and why a handshake validation is critical in network monitoring. Software utilized …
Suggested Courses

636 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question