2016-08-01 5 views
0

Как изменить код, приведенный ниже, чтобы принять Удалить и BackSpace Ключи также ??DataGridView событие Чтобы цифры, Backspace и Delete Keys только VB.Net

Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing 
    Select Case DataGridView1.CurrentCell.ColumnIndex 
     Case Is = 0, 1 
      AddHandler CType(e.Control, TextBox).KeyPress, AddressOf TextBox_keyPress 
    End Select 

End Sub 

Private Sub TextBox_keyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) 
    If Not (Char.IsDigit(CChar(CStr(e.KeyChar))) Or e.KeyChar = ".") Then 
     e.Handled = True 
    End If 
End Sub 

Текущий код После модификации - не работает

Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing 
    Select Case DataGridView1.CurrentCell.ColumnIndex 
     Case Is = 0, 1 
      AddHandler CType(e.Control, TextBox).KeyPress, AddressOf TextBox_keyDown 
    End Select 

End Sub 

Private Sub TextBox_keyDown(ByVal sender As Object, ByVal e As KeyPressEventArgs) 
    If Not (Char.IsDigit(CChar(CStr(e.KeyChar))) Or e.KeyChar = ".") Then 
     e.Handled = True 
    End If 
End Sub 

EDIT - 2 Код

Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing 

     Select Case DataGridView1.CurrentCell.ColumnIndex 
      Case Is = 0, 1 
       AddHandler CType(e.Control, TextBox).KeyPress, AddressOf TextBox_keyDown 
     End Select 

    End Sub 

    Private Sub TextBox_keyDown(ByVal sender As Object, ByVal e As KeyEventArgs) 
     If Not (Char.IsDigit(CChar(CStr(e.KeyValue))) Or e.KeyValue = ".") Then 
      e.Handled = True 
     End If 
    End Sub 

Теперь получаю ошибки в TextBox_keyDown Слово это линия ...

AddressOf TextBox_keyDown 

Текст ошибки

Тяжесть Код Описание проекта Строка файла Подавление Государство Ошибка BC31143 Method 'Private Sub TextBox_keyDown (отправитель As Object, д Как KeyEventArgs)' не имеет подписи, совместимые с делегатом 'Делегат Sub KeyPressEventHandler (отправитель как объект, e As KeyPressEventArgs)'.

+0

Вы не можете сделать это, используя событие «KeyPress». вам нужно событие KeyDown. –

+0

Я изменил его в обоих местах как KeyDown, но он не позволяет мне удалять данные dgv. Я что-то пропустил? – Sixthsense

+0

опубликуйте свой текущий код и объясните, что означает 'not allow'. –

ответ

0

Изменения DataGridView EditMode недвижимость в EditOnEnter и используйте код, приведенные ниже.

Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing 
    Select Case DataGridView1.CurrentCell.ColumnIndex 
     Case Is = 0, 1 
      AddHandler CType(e.Control, TextBox).KeyPress, AddressOf TextBox_keyPress 
    End Select 

End Sub 

Private Sub TextBox_keyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) 
    If e.KeyChar <> ControlChars.Back Then 
     e.Handled = Not (Char.IsDigit(e.KeyChar)) 
    End If 
End Sub