2012-04-05 82 views
2

我有以下代碼:DataGridView的OnPaint事件中的無限循環是正常的嗎?

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

     base.OnPaint(e);   


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

,我可以看到這個變量增加至無窮遠。我用它來繪製一個圖形制作它的一個實例,它工作正常。 這是正常的嗎?我正在創建無限圖實例?或者我有一個問題,但我不知道

回答

3

當您更改該值時,網格需要重新編號爲Paint,因此再次觸發Paint事件並重新執行您的代碼。
此行爲是設計使然。

一般而言,您不應該在Paint處理程序中更改外部狀態;繪圖代碼應該是冪等的(除了提供的Graphics)。
Paint事件是不可預測的,並且會經常激發。

+0

非常好的回答:) – 2012-04-05 03:46:02