Je cherchais une réponse à cela aussi. J'ai fini par écrire un sous-répertoire générique qui pouvait être appelé à partir de n'importe quel DataGridView puisque j'avais beaucoup dans mes applications et je voulais que tous se comportent de la même manière. Cela a bien fonctionné pour moi, alors je voulais le partager avec quelqu'un d'autre qui a trébuché sur ce post.
En cas MouseClick pour le DGV j'ajouter le code
Private Sub SomeGrid_MouseClick(sender As Object, e As MouseEventArgs) Handles SomeGrid.MouseClick
DGV_MouseClick(sender, e)
End Sub
qui appelle les sous que je stocke dans un module partagé
Public Sub DGV_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Try
Dim dgv As DataGridView = sender
Dim h As DataGridView.HitTestInfo = dgv.HitTest(e.X, e.Y)
If h.RowIndex > -1 AndAlso h.ColumnIndex > -1 AndAlso dgv.Columns(h.ColumnIndex).CellType Is GetType(DataGridViewComboBoxCell) Then
Dim cell As DataGridViewComboBoxCell = dgv.Rows(h.RowIndex).Cells(h.ColumnIndex)
If Not dgv.CurrentCell Is cell Then dgv.CurrentCell = cell
If Not dgv.IsCurrentCellInEditMode Then
dgv.BeginEdit(True)
CType(dgv.EditingControl, ComboBox).DroppedDown = True
End If
End If
Catch ex As Exception
End Try
End Sub
Je ne pris aucune erreur, j'inclure seulement le code Try..Catch pour une instance rare je ne pouvais pas penser à cela pourrait jeter une exception. Je ne voulais pas que l'utilisateur soit dérangé par des messages d'erreur pour ce scénario. Si le sous-marin échoue, il est fort probable que le DGV se comportera comme il le fait normalement de toute façon.
Je suis heureux que vous avez été faire fonctionner! – thismat
C'était incroyablement utile. – BrianH