Ich war nach einer Antwort auf diese auch suchen. Ich schrieb schließlich ein generisches Sub, das von jedem DataGridView aufgerufen werden konnte, da ich viel in meinen Apps hatte und ich wollte, dass sie sich alle gleich benahmen. Das hat gut für mich funktioniert, also wollte ich es mit jedem teilen, der über diesen Post gestolpert ist.
Im Mouseclick-Ereignis für die DGV füge ich den Code
Private Sub SomeGrid_MouseClick(sender As Object, e As MouseEventArgs) Handles SomeGrid.MouseClick
DGV_MouseClick(sender, e)
End Sub
, die die folgenden Unter aufruft, die ich in einem gemeinsamen Modul speichern
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
ich Fehler nie erwischt, ich sind nur Der Try..Catch-Code für eine seltene Instanz, an die ich nicht denken konnte, könnte eine Ausnahme auslösen. Ich wollte nicht, dass der Benutzer durch Fehlermeldungen für dieses Szenario belästigt wird. Wenn der Subversand fehlschlägt, wird sich der DGV höchstwahrscheinlich so verhalten, wie er es normalerweise tut.
Ich bin froh, dass Sie bekam arbeiten it! – thismat
Das war unglaublich hilfreich. – BrianH