user112799
user112799

Reputation: 1625

Render winforms controls more smoothly

My winforms application is rendering very choppy. Is there a technique that can be used to either draw a form off screen, or to have it be hidden until the layout has been processed? Anything to help speed up the visual load of my forms.

Thanks for any help.

edit:

Forms have a couple grids each, and around 20 - 30 additional controls (textboxes / checkboxes). All controls are third party and I don't do any custom painting myself.

Upvotes: 2

Views: 1684

Answers (2)

Hans Passant
Hans Passant

Reputation: 941724

You are getting perilously close to having too many controls on your form. You'll see each control taking its turn painting itself. Double buffering cannot fix this, the entire form with all control windows would have to be double-buffered. That's possible since XP, it supports the WS_EX_COMPOSITED window style flag. It won't speed up painting but the screen won't be updated until all rendering is completed.

Paste this code into your form to enable it:

protected override CreateParams CreateParams {
  get {
    CreateParams cp = base.CreateParams;
    cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED
    return cp;
  }
} 

Upvotes: 10

Rubens Farias
Rubens Farias

Reputation: 57956

You can to call SuspendLayout and, later, do a ResumeLayout.

Upvotes: 1

Related Questions