Search code examples
c#eventsonpaint

How to use the OnPaint event in C#?


i saw some similar questions on the site but none of them really helped me.

I have a function that draws a few lines on the form when a button is clicked that vary in shape depending on the values the user enters in some textboxes.

My problem is that when i minimize the form, the lines disappear and i understood that this can be resolved by using the OnPaint event, but i don't really understand how.

Can anyone give me a simple example of using a function to draw something at the push of a button using the OnPaint event?


Solution

  • Here you go, simpe MSDN tutorial on User-Drawn Controls

    You must inherit Button class and override OnPaint method.

    Code example:

    protected override void OnPaint(PaintEventArgs pe)
    {
       // Call the OnPaint method of the base class.
       base.OnPaint(pe);
    
       // Declare and instantiate a new pen.
       System.Drawing.Pen myPen = new System.Drawing.Pen(Color.Aqua);
    
       // Draw an aqua rectangle in the rectangle represented by the control.
       pe.Graphics.DrawRectangle(myPen, new Rectangle(this.Location, 
          this.Size));
    }
    

    EDIT:

    Add property to your class and like public Color MyFancyTextColor {get;set;} and use it in your OnPaint method. Alsow it will apear in control property editor of visual studio form designer.