如何防止datagridview vb.net中的空格

时间:2014-01-15 15:02:50

标签: vb.net winforms validation datagridview

我有一个使用datagridview的vb.net windows窗体应用程序。我希望找到一种方法来阻止用户输入空格或空字符串,如果他们输入无效输入。我将看到一条消息,说明他们的错误,然后将提供默认值。这是我到目前为止,它可以防止完全空白的单元格,但如果我有一个空格(即按空格键添加空白字符串),它不知道它仍然是空白输入。

If (columnindex = 0) Then 'checking value for column 1 only
        Dim cellString = DataGridView1.Rows(rowindex).Cells(columnindex).value
        If cellString Is Nothing OrElse IsDBNull(cellString) OrElse cellString.ToString = String.Empty Then

            MessageBox.Show("Cannot Be Empty")
            DataGridView1.Rows(rowindex).Cells(columnindex).value = "Default Value"
            Exit Sub
        End If

3 个答案:

答案 0 :(得分:3)

使用String.IsNullOrWhiteSpace方法From MSDN
如果value为DBNull,则datagridview.Rows(0).Cells(0).Value.ToString()返回空字符串,因此您也不需要检查这个

If (columnindex = 0) Then 'checking value for column 1 only
    Dim cellString as String = DataGridView1.Rows(rowindex).Cells(columnindex).value.ToString()
    If String.IsNullOrWhiteSpace(cellString) = True Then

        MessageBox.Show("Cannot Be Empty")
        DataGridView1.Rows(rowindex).Cells(columnindex).value = "Default Value"
        Exit Sub
    End If
End If

答案 1 :(得分:0)

循环播放字符串中的每个字符,如果找到有效字符,则字符串有效

这样的事情:

 Dim IsValid as Boolean=false 

For I = 0 to cellstring.length - 2

    if Cellstring.substring(I,1) <> " " then IsValid = true

Next

答案 2 :(得分:0)

您可以使用EditingControlShowing事件为输入框注册KeyPress功能。

Private Sub YourDataGridView_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles YourDataGridView.EditingControlShowing

    Try
        RemoveHandler e.Control.KeyPress, AddressOf YourFunctionToPreventWhiteSpace
    Catch ex As Exception
    End Try

    AddHandler e.Control.KeyPress, AddressOf YourFunctionToPreventWhiteSpace

End Sub

Private Sub YourFunctionToPreventWhiteSpace(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)

    If Char.IsWhiteSpace(e.KeyChar) Then
        MsgBox("Your message.", MsgBoxStyle.Exclamation)
        e.Handled = True
    End If

End Sub