Для этого решения не используйте форматы.
Вам необходимо использовать объект текстового поля из ячейки:
'This will represent the content of the cell
Dim editBox As TextBox = Nothing
В событии EditingControlShowing
из вашей таблицы данных вам нужно получить объект textbox
и добавить событие keyDown
:
Private Sub DataGridView1_EditingControlShowing(sender As Object, e As
DataGridViewEditingControlShowingEventArgs) Handles
DataGridView1.EditingControlShowing
'Put the column index of the cell
If DataGridView1.CurrentCell.ColumnIndex = 2 Then
If TryCast(e.Control, TextBox) IsNot Nothing Then
editBox = DirectCast(e.Control, TextBox)
'Removing and then adding the keyDown event in the cell
RemoveHandler e.Control.KeyDown, AddressOf Cell_KeyDown
AddHandler e.Control.KeyDown, AddressOf Cell_KeyDown
End If
End If
End Sub
Private Sub Cell_KeyDown(sender As Object, e As KeyEventArgs)
'To commit the changes of the cell
DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
End Sub
Затем в событии cellLeave
снова внесите изменения в ячейку, замените "."
на ","
и установите значение textbox
:
Private Sub DataGridView1_CellLeave(sender As Object, e As DataGridViewCellEventArgs)
Handles DataGridView1.CellLeave
If DataGridView1.CurrentCell.ColumnIndex = 2 And DataGridView1.CurrentCell.Value IsNot Nothing Then
DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
DataGridView1.CurrentCell.Value = DataGridView1.CurrentCell.Value.ToString.Replace(".", ",")
editBox.Text = DataGridView1.CurrentCell.Value
End If
End Sub
Наконец, в CellEndEdit
введите код для сохранения данных в вашей базе данных.
Private Sub DataGridView1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
'Code to save in database here...
End Sub
Надеюсь, это поможет.