2

我有以下代码:

int a = 0;
    protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
    {

       base.OnPaint(e);         


        this.Rows[1].Cells[1].Value = a += 1;
    }

我可以看到变量增加到无穷大。我正在用它来绘制一个图形来制作它的一个实例,它工作正常。这是正常的吗?我正在创建无限图实例?或者我有问题但我不知道

4

1 回答 1

3

当您更改值时,网格需要重新Paint自身,从而Paint再次触发事件并重新执行您的代码。
此行为是设计使然。

通常,您永远不应该更改Paint处理程序中的外部状态;绘图代码应该是幂等的(除了提供的Graphics)。
Paint事件是不可预测的,并且会经常触发。

于 2012-04-05T03:27:57.793 回答