我有一个DataGridView,其中第一列可以容纳动画gif(动画加载圈)。为了使动画部分工作,我使用一个每100ms滴答一次的Forms.Timer并调用此方法
private void timGifAnimation_Tick(object sender, EventArgs e)
{
if(this.dataGridView1.Rows.Count > 0 && current >= 0 && current < this.dataGridView1.Rows.Count)
{
this.dataGridView1.Rows[current].Cells[0].Value = this.picProcessing.Image;
this.dataGridView1.InvalidateCell(0, current);
}
}
在将我的DataGridView放入SplitContainer之前,这就像一个迷人的工作。通过调用InvalidateCell不再重新绘制单元格,这是gif动画工作的唯一时间,现在是调整窗口大小或当我将鼠标悬停在按钮上时(悬停重绘一次,将鼠标移离按钮重新绘制)它再次)。在调试时,仍会调用上面的方法,它只是不重新绘制单元格。
答案 0 :(得分:0)
使控件或控件的一部分无效,将该区域标记为需要重新绘制。为了强制进行同步重绘,您应该在控件上调用Update()。否则,只要下一个绘制消息出现,就会重新绘制无效的单元格。
dataGridView1.Update();