DataGridViewComboBoxColumn editable ?
Bonjour à tous,
J'ai trouvé sur google déjà un début à ma problématique : Editer dans un Datagridview une cellule de type DataGridViewComboBoxColumn.
Mon idée est la suivante, l'utilisateur peut dans une fenêtre de config implémenter une liste de phrase préconçu qui sera injecté ensuite dans le DataGridViewComboBoxColumn. Seulement ce dernier peut également avoir envie d'ajouter une phrase différente lors de la saisie du tableau.
Voici ce qui marche +/-
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Private Sub DataGridView1_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
Dim comboControl As DataGridViewComboBoxEditingControl = TryCast(e.Control, DataGridViewComboBoxEditingControl)
If comboControl IsNot Nothing Then
If comboControl.DropDownStyle <> ComboBoxStyle.DropDown Then
comboControl.DropDownStyle = ComboBoxStyle.DropDown
End If
End If
End Sub
Private Sub DataGridView1_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating
Dim cell As DataGridViewComboBoxCell = TryCast(DataGridView1.CurrentCell, DataGridViewComboBoxCell)
If cell IsNot Nothing AndAlso (Not cell.Items.Contains(e.FormattedValue)) Then
cell.Items.Insert(0, e.FormattedValue)
If DataGridView1.IsCurrentCellDirty Then
DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
cell.Value = cell.Items(0)
End If
End Sub |
Seulement si je ne sélectionne pas un truc de la liste avant de tapoter une phrase au clavier, il ne me validera jamais l'ajout de la nouvelle ligne. En gros si je tape puis ENTREE ... ça efface le contenue du DataGridViewComboBoxColumn et ça reste figé à la même ligne.
Merci pour votre aide