Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 250
user112799 Avatar asked May 17 '26 09:05

user112799


2 Answers

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;
  }
} 
like image 114
Hans Passant Avatar answered May 20 '26 00:05

Hans Passant


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

like image 30
Rubens Farias Avatar answered May 20 '26 02:05

Rubens Farias



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!