2014-06-17 24 views
0

好吧,我是C#的新手,我对事件的工作方式感到困惑。目前我有一个绘制矩形的面板。该事件在面板初始化时调用,但我想在我的数据网格中执行某些操作后调用它。我只是想知道如何告诉对象更新。在面板上更新图形

在这种情况下我不使用事件吗?如果是这样,我只是创建一个新的图形实例并开始?

这里是我的代码:

private void panel6_Paint(object sender, PaintEventArgs e) 
{ 
    if(dataGridView1.RowCount != 0) 
    { 
     Pen lightRed = new Pen(Brushes.LightSalmon); 
     lightRed.Width = 1.0F; 
     lightRed.LineJoin = System.Drawing.Drawing2D.LineJoin.Miter; 
     int counter = 0; 
     foreach (var pair in currentPosition) 
     { 
     if(dataGridView1[0, counter].Style.BackColor == Color.Red) 
     { 
      e.Graphics.DrawRectangle(lightRed, new Rectangle(0, currentPosition.Count/panel6.Height * counter, 66, currentPosition.Count/panel6.Height * counter)); 
     } 
     } 
     lightRed.Dispose(); 
    } 
} 
+0

请避免在关键字或标签上贴上您的帖子标题。这就是为什么我们有一个标签系统。 – Sam

回答

1

每当你想强制重绘,请致电:

Invalidate(); 

...或

Refresh(); 

Invalidate()最好... Refresh()试图变得更直接。

因此,对于您的面板:

panel6.Invalidate(); 

你会在哪里,你要信号给控制,它应该重新绘制自己的任何一点调用它。这将导致您的Paint事件触发。