vb.net DataGridView按选中的单元格向左移或向右移对列进行排序,每行代码带注释
时间: 2024-03-22 18:38:20 浏览: 52
当用户单击DataGridView中的列标题时,可以使用以下代码按选定的单元格向左或向右移动列以对列进行排序:
```
Private Sub dataGridView1_ColumnHeaderMouseClick(ByVal sender As Object, ByVal e As DataGridViewCellMouseEventArgs) Handles dataGridView1.ColumnHeaderMouseClick
'获取选中单元格的列索引
Dim columnIndex As Integer = dataGridView1.SelectedCells(0).ColumnIndex
'向左移动列
If e.ColumnIndex < columnIndex Then
'获取将要移动到的列的索引
Dim moveIndex As Integer = columnIndex - 1
'如果已经到达左边缘,则不进行移动
If moveIndex < 0 Then
Return
End If
'获取选中单元格所在的行的数据
Dim row As DataGridViewRow = dataGridView1.Rows(dataGridView1.SelectedCells(0).RowIndex)
'在当前位置删除列
dataGridView1.Columns.RemoveAt(columnIndex)
'在新位置插入列
dataGridView1.Columns.Insert(moveIndex, row.Cells(columnIndex).OwningColumn)
'将单元格选中
dataGridView1.Rows(dataGridView1.SelectedCells(0).RowIndex).Cells(moveIndex).Selected = True
'向右移动列
ElseIf e.ColumnIndex > columnIndex Then
'获取将要移动到的列的索引
Dim moveIndex As Integer = columnIndex + 1
'如果已经到达右边缘,则不进行移动
If moveIndex >= dataGridView1.Columns.Count Then
Return
End If
'获取选中单元格所在的行的数据
Dim row As DataGridViewRow = dataGridView1.Rows(dataGridView1.SelectedCells(0).RowIndex)
'在当前位置删除列
dataGridView1.Columns.RemoveAt(columnIndex)
'在新位置插入列
dataGridView1.Columns.Insert(moveIndex, row.Cells(columnIndex).OwningColumn)
'将单元格选中
dataGridView1.Rows(dataGridView1.SelectedCells(0).RowIndex).Cells(moveIndex).Selected = True
End If
End Sub
```
注释已经写在代码中,可以根据需要进行调整。
阅读全文