我正在尋找這個答案。我最終編寫了一個可以從任何DataGridView中調用的泛型子類,因爲我的應用程序中有很多東西,我希望它們都以相同的方式運行。這對我來說非常合適,所以我想與任何偶然發現這篇文章的人分享。
在鼠標點擊事件的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