2014-06-13 57 views
1

我有一個DataGridView,有3列,其中兩列是用戶可編輯的。DataGridView單元將空的可編輯單元視爲null,忽略DataGridViewCellStyle.NullValue屬性

訪問單元格的值這樣

someObject.Property = dgv.Rows(x).Cells(y).Value.ToString() 

這顯然是因爲我不是爲空使用值前檢查時,我得到一個NullRef例外。因此,我決定將初始化DataGridView的對象更改爲永不包含填充單元格的字符串屬性的null值的對象,而不僅僅是檢查Nothing值(我現在要做的,絕不會擔心)。我只是用String.Empty代替。

我以爲一切都會好起來的,但似乎當我編輯單元格並將其留空時,它將它視爲空值而不是String.Empty。我已經處理了CellBeginEdit,CellEndEditCellLeave事件,試圖找到它從哪裏獲得這個神奇的空值,但無濟於事。

我看到the DataGridViewCellStyle.NullValue property on the MSDN,我認爲這將是答案,但事實證明,NullValue屬性默認爲String.Empty,因此沒有多大意義。

顯然這裏的簡單答案是「在使用之前檢查null」,但爲什麼我不能強制它將空字符串視爲空字符串而不是空值?

回答

0

datagrid單元格值是對象,空字符串是null。

你可以將它轉換爲一個字符串,然後檢查string.empty,但它並不遙遠,只是檢查它是什麼。

dim _value as string = dgv.Rows(x).Cells(y).Value 
someObject.Property = _value 

或者寫一個函數來檢查

Public Function checkForNull(_value as object) as string 

If _value is nothing then return string.empty else return _value.tostring() 

End Function 

....

SomeObject.Property = checkForNull(dgv.Rows(x).Cells(y).Value)