Tôi cũng đang tìm câu trả lời cho điều này. Tôi đã kết thúc viết một phụ chung mà có thể được gọi từ bất kỳ DataGridView kể từ khi tôi đã có rất nhiều trong các ứng dụng của tôi và tôi muốn tất cả họ cư xử theo cùng một cách. Điều này làm việc tốt cho tôi vì vậy tôi muốn chia sẻ nó với bất cứ ai khác tình cờ gặp bài đăng này.
Trong trường hợp mouseclick cho DGV tôi thêm mã
Private Sub SomeGrid_MouseClick(sender As Object, e As MouseEventArgs) Handles SomeGrid.MouseClick
DGV_MouseClick(sender, e)
End Sub
nào gọi là tiểu sau đó tôi lưu trữ trong một module chia sẻ
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
Tôi chưa bao giờ bắt gặp bất kỳ lỗi nào, tôi chỉ bao gồm các Try..Catch mã cho một số trường hợp hiếm hoi tôi không thể nghĩ rằng có thể ném một ngoại lệ. Tôi không muốn người dùng bị làm phiền bởi các thông báo lỗi cho kịch bản này. Nếu phụ không thành công, thì rất có thể DGV sẽ hoạt động như bình thường.
Nguồn
2015-01-06 07:25:56
Tôi rất vui vì bạn đã nhận nó làm việc! – thismat
Điều này thật hữu ích. – BrianH