jimboo
Mitglied
Hallo,
ich verwende ein DataGridView, dass ich über ein Dataset aus einer SQL-DB befülle.
Die MS SQL-DB hat ein Datenfeld "decimal NULL".
Die dazugehörige DataGridViewColumn soll daher nur Zahlen und LEER akzeptieren. Letzteres funktioniert jedoch nicht. Die Eingabe einer Zahl ist notwendig, um den Bearbeitungsmodus der Zelle verlassen zu dürfen. Es ist mir also nicht möglich eine leere Zelle zu hinterlassen.
Mein Ansatz:
Trotzdem vermute ich die Ursache für das Problem beim Binding der DataSource.
ich verwende ein DataGridView, dass ich über ein Dataset aus einer SQL-DB befülle.
Die MS SQL-DB hat ein Datenfeld "decimal NULL".
Die dazugehörige DataGridViewColumn soll daher nur Zahlen und LEER akzeptieren. Letzteres funktioniert jedoch nicht. Die Eingabe einer Zahl ist notwendig, um den Bearbeitungsmodus der Zelle verlassen zu dürfen. Es ist mir also nicht möglich eine leere Zelle zu hinterlassen.
Mein Ansatz:
Code:
Private Sub dataGridView1_EditingControlShowing(ByVal sender As Object, _
ByVal e As DataGridViewEditingControlShowingEventArgs) _
Handles DataGridView1.EditingControlShowing
Dim txtEdit As TextBox = e.Control
'remove any existing handler
RemoveHandler txtEdit.KeyPress, AddressOf txtEdit_Keypress
AddHandler txtEdit.KeyPress, AddressOf txtEdit_Keypress
End Sub
Private Sub txtEdit_Keypress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
Console.WriteLine("KeyPress " & e.KeyChar.ToString())
'Test for numeric value or backspace in first column
If DataGridView1.CurrentCell.ColumnIndex = 0 Then
If IsNumeric(e.KeyChar.ToString()) _
Or e.KeyChar = ChrW(Keys.Back) _
Or e.KeyChar = "." Then
Console.WriteLine("KeyPress number")
e.Handled = False 'if numeric display
Else
Console.WriteLine("Enter Numbers Only")
e.Handled = True 'if non numeric don't display
End If
End If
End Sub
Trotzdem vermute ich die Ursache für das Problem beim Binding der DataSource.