У меня есть DataGridView , привязанный к DataTable , в котором 1 + 16 столбцов определены как Целое число .
Стиль ячейки по умолчанию - шестнадцатеричные 2 цифры (.Format="X2"
).
При вводе в редактирование ячейки я хотел бы предоставить пользователю возможность записать значение в десятичном или шестнадцатеричном виде.
- Шестнадцатеричное можно записать, например, 0x00, 0X01, x02, XFF
- Десятичное число, как 0, 1, 2, 15
По этой причине в EditingControlShowing Я добавляю "0x" к значению TextBox
Private Sub BankGrid_EditingControlShowing(ByVal sender As Object, ByVal e As DataGridViewEditingControlShowingEventArgs)
Dim grid As DataGridView = DirectCast(sender, DataGridView)
If Not TypeOf e.Control Is TextBox Then Return
Dim tb As TextBox = DirectCast(e.Control, TextBox)
tb.Text = "0x" & tb.Text
RemoveHandler tb.KeyPress, AddressOf TextBox_KeyPress
AddHandler tb.KeyPress, AddressOf TextBox_KeyPress
End Sub
в то время как в TextBox_KeyPress sub Я выполняю всю фильтрацию ввода, чтобы избежать неправильных вводов.
Я не могу понять, к какому событию я могу прикрепиться, чтобы определить, когда редактирование закончено. Я бы хотел что-то, противоположное EditingControlShowing , чтобы я мог удалить «0x», но я не нашел его.