I ont une DataGridView lié à un DataTable qui a 1 + 16 colonnes définies comme entier.DataGridView Cellule Volume de montage avec mise en forme décimale/hexadécimale
Le style de cellule par défaut est 2 chiffres hexadécimaux (.Format="X2"
).
En entrant dans l'édition de cellules, je voudrais fournir à l'utilisateur la possibilité d'écrire la valeur en décimal ou en hexadécimal.
- Hexadécimal pourrait être écrit comme, par exemple, 0x00, 0x01 x02, XFF
- décimal comme 0, 1, 2, 15
Pour cette raison, dans EditingControlShowing ajouter " 0x » à la valeur 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
tandis que dans TextBox_KeyPress sous toutes les entrées je joue filteri ng pour éviter les entrées invalides. Ce que je n'arrive pas à comprendre est l'événement auquel je peux attacher pour détecter quand l'édition est terminée. Je voudrais quelque chose de contraire à EditingControlShowing afin que je puisse supprimer "0x" mais je ne l'ai pas trouvé.
CellValueChanged arrivent trop tard dans mon cas, et il seemes que CellValueChanging n'existe pas – Drake
@ marco.ragogna Désolé, je regardais la version DevExpress de datagridview. Je passerais par les actionlisteners possibles que vous pouvez utiliser avec le datagridview. Par exemple, il y a un "CellBeginEdit" et un "CellEndEdit" qui pourrait aider. – Kyra
pas de problème, j'ai travaillé dans le passé avec DevExpress, très beau produit :) j'ai trouvé une solution, merci – Drake