dotnetmonitor.com

 
Index
Previous
Next

 

SuspendLayout and ResumeLayout only prevent OnLayout from being called. Additionally they only prevent OnLayout from being called for that particular control. So if you have a Form with a Panel in it, and call SuspendLayout on the Form, the Panel's layout is not suspended.

 

private void button1_Click(object sender, EventArgs e) {

this.Layout += new LayoutEventHandler(Form1_Layout);

panel1.Layout += new LayoutEventHandler(Panel1_Layout);

 

 

// Test one - calling PerformLayout here does not call Form1_Layout

this.SuspendLayout();

this.PerformLayout();

this.ResumeLayout(false);

 

 

// Test two - calling PerformLayout here calls Panel1_Layout

// Child controls are not suspended when the parent is suspended.

this.SuspendLayout();

panel1.PerformLayout();

this.ResumeLayout(false);

 

 

// Test three, properly suspending layout

this.SuspendLayout();

panel1.SuspendLayout();

panel1.PerformLayout(); // <--- Layout event on Panel NOT called

panel1.ResumeLayout(false);

this.ResumeLayout(false);

 

 

panel1.Layout -= new LayoutEventHandler(Panel1_Layout);

this.Layout -= new LayoutEventHandler(Form1_Layout);

 

 

}

Terms
Docking Anchor Layout
What happens when I have Dock and Anchors that conflict?
Dock Scenarios
Padding Margin
You have a perf problem with Layout - how to diagnose?