2014-06-17 54 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事件觸發。