我有一个使用datagridview的Windows窗体vb.net程序。我正试图找到一种方法来阻止用户在我的datagridview中输入特殊字符(例如$,@,!,#,%,^和&)。当用户输入一个特殊字符时,我会看到一个适当的消息框来解释他们的错误,然后我给他们提供了一个默认值。我有一切工作,除了一种方法来防止特殊字符或符号。我认为这样的事情必须起作用,但我似乎找不到阻止这种进入的方法:
If (columnindex = 0) Then 'checking value for column 1 only
Dim cellString = DataGridView1.Rows(rowindex).Cells(columnindex).value
If cellString String.IsSymbol(cellString) = true Then
MessageBox.Show("Special Characters Not Allowed")
End If
DataGridView1.Rows(rowindex).Cells(columnindex).value = "Default Value"
Exit Sub
End If
答案 0 :(得分:1)
您可以使用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 YourFunctionToPreventSpecialCharacters
Catch ex As Exception
End Try
If Me.dgvTableViewer.CurrentCell.ColumnIndex = YourDataGridView.Columns("YourColumn").Index Then
AddHandler e.Control.KeyPress, AddressOf YourFunctionToPreventSpecialCharacters
End If
End Sub
答案 1 :(得分:0)
尝试将其放入DataGridView的keydown事件:
Private Sub DataGridView1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles DataGridView1.KeyDown
Select Case e.KeyCode
Case Keys.D0 To Keys.D9 And e.Shift
MsgBox("NOPE.")
e.SuppressKeyPress = True
End Select
End Sub
基本上检查按键是否来自计算机上的0-9键,以及是否持有SHIFT
键。如果是,则显示Msgbox并禁止按键。这会阻止键盘上的字符0-9班!@#$%^&*()
。你可以编辑这个
Case Keys.A
e.Suppress ...
Msgbox ... etc