好的,所以我是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 :(得分:1)
每当您想强制重绘时,请致电:
Invalidate();
...或
Refresh();
Invalidate()
是首选... Refresh()
尝试更直接。
所以,对于你的小组:
panel6.Invalidate();
您可以在任何想要向控件发出信号的地方调用它,它应该重新绘制自己。这将导致您的Paint
事件被解雇。