删除字符串的内容 - TextBox的行为与DataGridView文本单元略有不同

时间:2012-12-12 17:04:09

标签: string winforms data-binding datagridview textbox

如果您设置一个简单的测试表单,其中TextBox绑定到类的字符串属性并删除内容,则传递回属性setter的值为""

enter image description here

如果对DataGridView中的单元格执行相同操作,则传递回属性setter的值为Nothing

enter image description here

为什么差异,我们可以应用于DataGridView使其行为与TextBox相同?

3 个答案:

答案 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,则不会执行进一步的解析,结果值将保持为""。