更新面板上的图形

时间:2014-06-17 19:35:49

标签: c# .net winforms graphics

好的,所以我是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();
   }
}

1 个答案:

答案 0 :(得分:1)

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

Invalidate();

...或

Refresh();

Invalidate()是首选... Refresh()尝试更直接。

所以,对于你的小组:

panel6.Invalidate();

您可以在任何想要向控件发出信号的地方调用它,它应该重新绘制自己。这将导致您的Paint事件被解雇。