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 +/-
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Merci pour votre aide
Partager