Я также искал ответ на этот вопрос. Я закончил тем, что написал общий подраздел, который можно было бы вызывать из любого DataGridView, так как у меня было много в моих приложениях, и я хотел, чтобы все они вели себя одинаково. Это работало хорошо для меня, поэтому я хотел поделиться им с кем-либо, кто наткнулся на этот пост.
В случае Mouseclick для DGV добавить код
Private Sub SomeGrid_MouseClick(sender As Object, e As MouseEventArgs) Handles SomeGrid.MouseClick
DGV_MouseClick(sender, e)
End Sub
который вызывает следующие подразделы, что я хранить в общем модуле
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
Я никогда не поймали какие-либо ошибки, я только включить код Try..Catch для какого-то редкого экземпляра, о котором я не мог думать, может вызвать исключение. Я не хотел, чтобы пользователь беспокоил сообщения об ошибках для этого сценария. Если сбой не выполняется, то, скорее всего, DGV будет вести себя так, как обычно.
Я рад, что ты получил это работает! – thismat 2008-10-28 12:41:38