mggSoft
mggSoft

Reputation: 1042

Resizing Panel Containing UserControl

I have a UserControl that contains invisible controls, to make them visible, the UserControl resizes.

I need to resize the Panel that contains the UserControl, but I don't know how.

Upvotes: 3

Views: 17165

Answers (5)

Michael Kalinski
Michael Kalinski

Reputation: 31

I know that this topic is pretty old but I want to add my method, as well...

If you have a Panel containing a UserControl you can easially resize the panel.Controls by firing Form1_Resize event.

 private void Form1_Resize(object sender, EventArgs e)
        {
            foreach (Control control in MasterPanel.Controls)
            {
                control.Size = MasterPanel.Size;
            }

        }

Just make sure that you anchor its content properly.

Upvotes: 0

Anish.A.R
Anish.A.R

Reputation: 22

To resize the control , call scale of to the control.

           // To zoom in controls.
            foreach (Control c in MyFlowLayoutPanel.Controls)
            {
                PictureBox ptc = c as PictureBox;

                if (null != ptc)
                {
                    Point pt = new Point(2, 2);
                    SizeF sf = new SizeF(pt);
                    c.Scale(sf);
                }
            }

// To zoom out controls. foreach (Control c in MyFlowLayoutPanel.Controls) { PictureBox ptc = c as PictureBox;

                                if (null != ptc)
                                {
                                    SizeF sf = new SizeF(0.5F, 0.5F);
                                    c.Scale(sf);
                                }
                            }

Upvotes: 0

Ritch Melton
Ritch Melton

Reputation: 11598

This behavior is handled well by the Panel and Form classes without explicit sizing (and without the layout bugs introduced when the user has a high-DPI monitor or uses the large or extra-large font settings.

1) Create a Form with a docked FlowLayoutPanel.

Docked

2) Set the Form and FlowLayoutPanel's AutoSize to true and AutoSizeMode to GrowAndShrink

GrowAndShrink

3) Add your panels and content.

Design

4) Programmatically set the desired panel's Visible property to hidden

hiddenPanel.Visible = false;

Hidden

5) or true

hiddenPanel.Visible = true;

Visible

Upvotes: 7

FastAl
FastAl

Reputation: 6280

Put this code in the usercontrol:

Size last = new Size(0, 0);

private void Me_Resize(object sender, System.EventArgs e)
{
    if (last != new Size(0, 0)) {
        this.Parent.Size = Size.Add(this.Parent.Size, Size.Subtract(this.Size, last));
    }
    last = this.Size;
}

Will also retain margins (e.g., if the panel is larger than your usercontrol or has other controls beside your usercontrol.)

Upvotes: 2

KreepN
KreepN

Reputation: 8598

If you'd like to resize it to a particular size, you can do it on the code behind:

Size panelSize = new Size(500, 500);
usercontrol1.Parent.Size = panelSize;

You could add this code to the usercontrol if that is where you wish to resize from.

Upvotes: 0

Related Questions