如果您设置一个简单的测试表单,其中TextBox绑定到类的字符串属性并删除内容,则传递回属性setter的值为""
。
如果对DataGridView中的单元格执行相同操作,则传递回属性setter的值为Nothing
。
为什么差异,我们可以应用于DataGridView使其行为与TextBox相同?
答案 0 :(得分:1)
Nothing
是VB的C#版本null
或数据库NULL
。这意味着没有值,而不是""
,这意味着有一个空字符串的值。
我不完全确定,但我怀疑差异是因为文本框的Text
属性始终是字符串,但单元格的Value
属性可以是任何对象。当值为Nothing
时,您可以使用null-coalescing operator返回空字符串。
Set(ByVal value As String)
_Surname = If(value, "")
End Set
或者,您可以在编辑后验证单元格并将其明确设置为""
。请参阅here以获取示例 - 您只需更改值,而不是向用户发送消息。
答案 1 :(得分:1)
如果我更正,DataGridViewTextBoxCell
默认为Null
,而TextBox
默认为String.Empty
您可以查看Null vs Empty
答案 2 :(得分:0)
DataGridView转换""在单元格解析期间进入Null。
如果您处理CellParsing事件并且只设置ParsingApplied,则不会执行进一步的解析,结果值将保持为""。