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 : 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
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