作用:用户使用鼠标双击DataGridView的单元格时,使单元格变成ComboBox,根据需要也可改成单击事件,使用Listbox等其他控件
变量说明:
dgv:DataGridView
cbb:ComboBox,Visible属性设置为False
cell:DataGridViewCell,窗体成员变量,始终引用用户双击的单元格
代码如下:
Private Sub dgv_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles dgv.MouseDoubleClick
'使用cbb的值更新用户所选的单元格的值
If cell IsNot Nothing Then
cell.Value = cbb.SelectedItem
End If
Dim hti As System.Windows.Forms.DataGridView.HitTestInfo
hti = dgv.HitTest(e.X, e.Y)
If hti.Type = DataGridViewHitTestType.Cell Then
cbb.Visible = True
'调整ComboBox位置以及大小
Dim ScreenPoint As Point = dgv.PointToScreen(New Point(hti.ColumnX, hti.RowY))
'转换成工作区坐标
Dim FormPoint As Point = Me.PointToClient(ScreenPoint)
cbb.Location = FormPoint
cell = dgv.Rows(hti.RowIndex).Cells(hti.ColumnIndex)
cbb.Size = cell.Size
cbb.SelectedItem = cell.Value
End If
End Sub