Many of us write common graphics code in the Form's Paint
event because the Paint Event handler provides access to the Graphics
object, and also because this handler is fired whenever the form is redrawn (first shown and restored from its minimized state).
There's just one problem: The Paint event fails when the form is resizedit's not triggered in the case of a form resize.
There are two workarounds for this problem:
- Use the handy Invalidate() method. This causes the paint message to be sent to the form, which calls the Paint handler.
- Use control(Form)'s ResizeRedraw property
to redraw itself when the control is resized. Set it to true either in the constructor or the Main() method.
If only a particular portion of the control needs to be refreshed, it's best to call it with a Rectangle
parameter that specifies the portion of the control, otherwise it will hit the performance of the application.
Note: When you call the Invalidate() method without any parameters, the Paint event is called for the entire area.