2015-07-02 2 views
0

У меня есть функция OnPaint, которая рисует диаграмму:Winform перекрашивать через 5 секунд

protected override void OnPaint(PaintEventArgs e) 
    { 
     Graphics g = e.Graphics; 
     cs.ChartArea = this.ClientRectangle; 
     AddData(); 
     SetPlotArea(g); 
     cs.AddChartStyle(g); 
     dc.AddLines(g, cs); 
     //lg.AddLegend(g, dc, cs); 
     g.Dispose(); 
    } 

я добавил таймер внутри Form1(), который должен перерисовки диаграмму на каждые 5 секунд:

var timer = new Timer(); 
timer.Tick += new EventHandler(timer_Tick); 
timer.Interval = 5000; 
timer.Start(); 

и функция time_Tick:

void timer_Tick(object sender, EventArgs e) 
    { 
     //Repaint the chart 
    } 

можно перерисовывать график каждые 5 секунд, используя функцию timer_Tick?

+0

положить 'this.Invalidate();' в коде клеща. Непонятно, где вы создаете этот таймер, но похоже, что это может привести к утечке памяти - лучше объявить 'private timer = new Timer();' в области формы. – LarsTech

+1

Не уничтожайте этот объект Graphic, вы его не создали. – LarsTech

+0

Я добавляю таймер в методе Form1(). Если вы знаете лучшее место, пожалуйста, дайте мне знать. – Dana

ответ

1

Попробуйте это:

void timer_Tick(object sender, EventArgs e) 
{ 
    this.invalidate(); 
} 
Смежные вопросы