1

如果表中的条目为空或空白,我正在尝试找到一种将消息插入文本框的方法。我尝试了以下代码,但文本框未显示该消息。我知道我编码错误但看不到它。有人可以指出我的错误。谢谢

Private Sub UserDataGridView_CellContentClick(ByVal sender As System.Object,
                  ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
                                   Handles UserDataGridView.CellContentClick
  Dim value As Object = UserDataGridView.Rows(e.RowIndex).Cells(0).Value
  Dim NoEdit As Object = UserDataGridView.Rows(e.RowIndex).Cells(1).Value
  Dim InvCnt As Object = UserDataGridView.Rows(e.RowIndex).Cells(2).Value
  Dim InvAddress As Object = UserDataGridView.Rows(e.RowIndex).Cells(3).Value
  Dim Email As Object = UserDataGridView.Rows(e.RowIndex).Cells(4).Value
  Dim Tel As Object = UserDataGridView.Rows(e.RowIndex).Cells(5).Value
  Dim Fax As Object = UserDataGridView.Rows(e.RowIndex).Cells(6).Value

  txtCustomerActive.Text = CType(value, String)
  txtCustomerNoedit.Text = CType(NoEdit, String)
  txtInvoiceContact.Text = CType(InvCnt, String)
  txtInvoiceAddress.Text = CType(InvAddress, String)
  txtEmail.Text = CType(Email, String)
  txtCustomerTelephone.Text = CType(Tel, String)

  If Fax Is Nothing OrElse IsDBNull(Fax) Then
    txtCustomerFax.Text = "No Number on record" ' Display if no record
  Else
    txtCustomerFax.Text = CType(Fax, String)
  End If

  ' txtCustomerFax.Text = CType(Fax, String)
End Sub
4

1 回答 1

3

您还需要测试空字符串,因为IsDBNull只检查 DBNull 值,而不是空字符串

 If Fax Is Nothing OrElse IsDBNull(Fax) OrElse Fax = string.Empty Then
    .....   

MSDN 说

如果 Expression 的数据类型计算为 DBNull 类型,则 IsDBNull 返回 True;否则,IsDBNull 返回 False。

下面来自@Arion 的有趣评论,他建议使用 string.IsNullOrEmpty。所以你可以只用两次调用来重写测试

 If IsDBNull(Fax) OrElse string.IsNullOrEmpty(Fax) then 

但是,首先测试 IsDBNull 然后测试 IsNullOrEmpty 很重要,因为将 DBNull.Value 传递给 string.IsNullOrEmpty 会引发异常

于 2013-10-10T12:27:00.343 回答