Gorchestopher H
Gorchestopher H

Reputation: 1161

How Can I Intelligently Implement Auto-Resizing in a Visual C# Winforms App?

My application (which I am using Visual C# 2008 WinForms for) involves a lot of generated controls. Specifically: grids of buttons, arrays of labels, lists, headings, etc... all populated so that they fit their containers appreciably.

I want users to be able to resize the main form, which obviously would require me to either destroy my generated content, and remake it at the proper size OR I could index through every control, figure out what it is by name and type, and re-size each item individually. I would have to do this while/after the form resizes.

Are there any more intelligent ways of doing this? Dock and Anchor don't quite apply here because I am dealing with items that don't make up 100% of a dimension (for example, grids of buttons).

Upvotes: 0

Views: 900

Answers (2)

oekstrem
oekstrem

Reputation: 477

Docking/anchoring is probably the answer here. You need to anchor your grid to top/bottom/left/right or dock it (same effect, but the grid will fill the parent control).

If this is done right your control(s) will re-size with the rest of the form just as if you created everything in the designer.

I believe something like this would work:

Control.Anchor = AnchorStyles.TopLeft | AnchorStyles.BottomRight;

Upvotes: 0

zeFrenchy
zeFrenchy

Reputation: 6591

Hard do give a reasonnable answer without seing just how complex the layout in question is.

But in principle, you should use a layout container such as FlowLayoutPanel or TableLayoutPanel to do the job they were designed to do. If one does not do the job, just nest them.

Upvotes: 2

Related Questions