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

String 删除字符串文本框的内容与DataGridView文本单元格的行为略有不同,string,winforms,data-binding,datagridview,textbox,String,Winforms,Data Binding,Datagridview,Textbox,如果使用绑定到类的字符串属性的文本框设置简单测试表单并删除内容,则传递回属性设置器的值为“” 如果对DataGridView中的单元格执行相同的操作,则传递回属性设置器的值为Nothing 为什么会有这种差异?我们是否可以将任何东西应用到DataGridView,使其与文本框的行为相同?Nothing是VB版本的C#null或数据库的null。这意味着没有值,而不是有空字符串的值 我不完全确定,但我怀疑区别在于文本框的Text属性始终是字符串,而单元格的值属性可以是任何对象。当值为Nothi

如果使用绑定到类的字符串属性的文本框设置简单测试表单并删除内容,则传递回属性设置器的值为

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


为什么会有这种差异?我们是否可以将任何东西应用到DataGridView,使其与文本框的行为相同?

Nothing
是VB版本的C#
null
或数据库的
null
。这意味着没有值,而不是有空字符串的值

我不完全确定,但我怀疑区别在于文本框的
Text
属性始终是字符串,而单元格的
属性可以是任何对象。当值为
Nothing
时,可以使用返回空字符串

Set(ByVal value As String)
   _Surname = If(value, "")
End Set

或者,您可以验证单元格后期编辑,并将其显式设置为
“”
。请参见示例-不向用户发送消息,您只需更改值。

如果我正确,默认情况下
DataGridViewTextBoxCell
Null

TextBox
String.Empty

在单元格解析期间,您可以检查DataGridView是否将“”转换为Null


如果您处理CellParsing事件并仅设置ParsingApplied,则不会执行进一步的解析,结果值将保留为“”。

谢谢,是否有任何方法可以将DataGridViewTextBoxCell设置为默认的String.Empty?我不能说,但您能给我一个原因或您执行此任务的目的是什么?如果您不介意的话:)在某个时候,我们必须将类实例写回数据库,如果一个散乱的字符串被设置为nothing,那么写操作将失败。所以我们可以将数百个setter更改为检查null,我们可以将几十个数据库写入更改为检查null,或者。。。好多了。。。我们可以只更改单个DataGridView,将删除的单元格视为空字符串,就像文本框一样。这就是我的原因。好的,我明白你的意思,所以我们有一个扩展来检查
DataGridViewTextBoxCell
空字符串或空字符串。我假设您已经知道For循环的
语句,并尝试使用此代码
If String.IsNullOrWhiteSpace(DataGridView1.Rows(rowIndex.Cells(cellIndex.FormattedValue.ToString())然后“如果
我希望它会有帮助,那么您的逻辑在这里结束:)但是无论如何,有很多方法可以完成这项任务,但是现在
for循环
IsNullOrWhiteSpace
是解决您问题的基本方法:)谢谢,有道理,我试试看。但如果我们不必更改数百个setter,而是可以将DataGridView(或至少其DataGridViewTextBoxCell)配置为在字符串清空时默认为“”。你知道我们是否可以对DataGridView进行配置更改吗?@hawbsl-我不知道,马上。不过,您可以尝试在使用它的代码中进行更改。有一种方法可以代替检查它是否等于
再次阅读您的第一段提醒我们为什么希望datagridview将单元格内容视为空字符串,因为那里有一个值。该值为空字符串。@hawbsl-I在一个可能有助于此的链接中进行了编辑。看看是否有用。