For a datagrid view control the KeyPress and KeyDown Events get fired only for non printable characters where for other controls e.g textbox etc the event gets fired for each and every key pressed. Also for the “Tab” key ,the events does not get fired for the first time. If you need these events to get fired for every single key on the keyboard for datagrid view then read further how to do it.
Add the EditingControlShowing event and type cast the cell control (is input argument for the event) to the textbox and add handlers for the textbox key events.
The Code below validates the first column values for space character.
Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing If Me.DataGridView1.CurrentCell.ColumnIndex = 0 And Not e.Control Is Nothing Then Dim tb As TextBox = CType(e.Control, TextBox) AddHandler tb.KeyDown, AddressOf TextBox_KeyDown AddHandler tb.KeyPress, AddressOf TextBox_KeyPress End If End Sub Private Sub TextBox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) If e.KeyCode = Keys.Space Then flag = True End If End Sub Private Sub TextBox_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) e.Handled = flag flag = False End Sub