vb.net - 在使用 VB.Net的datagridview中,如何防止特殊字符

  显示原文与译文双语对照的内容

我有一个 Windows 窗体 VB.Net 程序,它使用一个 datagridview 。 试图找到阻止用户输入特殊字符的方法( 比如 。 $,@,,#,%,^,&) 中的当用户输入一个特殊字符时,会出现一个approprioate消息框,然后提供默认值。! 除了防止特殊字符或者符号的方法之外,我都有工作。 我认为这样的东西必须工作,但我无法找到阻止这种入口的方法:


 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

时间: 作者:

可以使用 EditingControlShowing 事件为输入框对 KeyPress 函数进行 register 操作。


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

作者:

尝试将它的放在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

...