0

I have created a UserControl that split the screen into rectangles but my control is executing the OnPaintBackground Many times whilst it should execut it just one please help me because it's really important to execut it just once because the scrren starts flickaring much.

public partial class Schedual : UserControl
{
    int days;

    public int Days
    {
        get { return days; }
        set
        {
            days = value;
            change = true;
            Invalidate(true);
        }
    }

    int periods;

    public int Periods
    {
        get { return periods; }
        set
        {
            periods = value;
            change = true;
            Invalidate(true);
        }
    }

    Brush brush;

    bool change = false;

    List<Panel> panels;

    public Schedual()
    {
        InitializeComponent();
        this.ResumeLayout(true);
        this.days = 1;
        this.periods = 1;
        brush = Brushes.White;
        change = false;
     }

    protected override void OnPaint(PaintEventArgs e)
    {
        //stuff ....... or base.OnPaint(e);
    }

    protected override void OnPaintBackground(PaintEventArgs e)
    {
        Graphics g = e.Graphics;
        var h = this.Height / days;
        var w = this.Width / periods;
        for (int i = 0; i < days; i++)
        {
            for (int j = 0; j <= periods; j++)
            {
                g.FillRectangle(brush, j * w, i * h, w, h);
                if (change)
                {
                    AddPanel(j * w, i * h, w, h);
                }
                g.DrawLine(Pens.Black, 0, i * h, this.Right, i * h); //draw the horizantle lines
                g.DrawLine(Pens.Black, j * w, 0, this.Bottom, j * w); //draw the verical lines
            }
        }
        change = false;
    }

}

the output is that the screen is flickaring much when drawing the background over and over again ......

Soner Gönül
  • 97,193
  • 102
  • 206
  • 364
Yaser Jaradeh
  • 322
  • 1
  • 6
  • 27

1 Answers1

0

Double buffering...

See more info here - http://msdn.microsoft.com/en-us/library/3t7htc9c.aspx

Nieldev
  • 211
  • 1
  • 10