我有一个使用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
答案 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