如何使用vb.net防止datagridview中的特殊字符

时间:2014-01-16 13:41:37

标签: vb.net validation datagridview

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

2 个答案:

答案 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