0

編輯:找到解決方案。 DataGridViewColumn HeaderText單元格定義爲DataGridView中的一行。當它們改變時,它會調用DataGridView.CellValueChanged事件。NullReferenceException當設計器分配DataGridViewColumn HeaderText

所以我不知道是什麼導致這個問題。每次設置列的HeaderText時,我生成的設計器代碼都會拋出一個NullReferenceException。這些列是在DataGridView屬性中創建的。但是,當我快速嘗試捕捉HeaderText時,名稱是正確的。下面是的HeaderText任務之一:

this.lightType.HeaderText = "Type"; 

這裏有一個快速的代碼,我驗證的HeaderText是正確賦值(我不是在設計代碼保持此,只是爲了調試)之後。

try 
    { 
    this.lightType.HeaderText = "Type"; 
    } 
catch(NullReferenceException e) 
    { 
    MessageBox.Show(e.Message); 
    MessageBox.Show(lightType.HeaderText); 
    } 

MessageBox和調試器都在賦值後直接顯示正確的名稱,但賦值仍然會引發NullReferenceException。

任何想法?

+1

可能重複[什麼是NullReferenceException,以及如何解決它?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-doi-i-fix -it) –

+1

所以'lightType'肯定是null。你能找到它在哪裏初始化('lightType = new ...')? –

回答

0

顯然,列名被定義爲DataGridView的一行,所以當名稱被改變時,一個DataGridView.CellValueChanged事件被調用,我在我的代碼中調用了一個函數,然後調用未聲明的值。