。.net datagridview 多行上下移动代码
-
Public Sub UpDGV(ByVal dgv As DataGridView) '上移函数
Try
Dim dgvsrc As DataGridViewSelectedRowCollection = dgv.SelectedRows '获取选中行的集合
If dgvsrc.Count > 0 Then
Dim index_R As Integer = dgv.SelectedRows(0).Index '获取当前选中行的索引,DataGridView.SelectedRows结果是倒序存的,SelectedRows(0)标识选择的最后一项。
If index_R > 0 Then '如果该行不是第一行
Dim R_dgv As DataGridViewRow = dgv.Rows(index_R - dgvsrc.Count) '获取选中行的上一行
dgv.Rows.RemoveAt(index_R - dgvsrc.Count) '//删除原选中行的上一行,选中行会自动上移.
dgv.Rows.Insert(index_R, R_dgv) '将选中行的上一行(即删除的行)插入到选中行的后面
For i As Integer = 0 To dgvsrc.Count - 1 '选中移动后的行
dgv.Rows(index_R - i - 1).Selected = True
Next
Else
MsgBox("已是第一行,无法上移")
Exit Sub
End If
End IfCatch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
Public Sub DownDGV(ByVal dgv As DataGridView) '下移函数
Try
Dim dgvsrc As DataGridViewSelectedRowCollection = dgv.SelectedRows ''获取选中行的集合
If dgvsrc.Count > 0 Then
Dim indexr As Integer = dgv.SelectedRows(0).Index '获取当前选中行的索引
If (indexr >= 0 And dgv.RowCount - 1 <> indexr) Then '如果该行不是最后一行
Dim dgvR As DataGridViewRow = dgv.Rows(indexr + 1) '获取选中行的下一行
dgv.Rows.RemoveAt(indexr + 1) '删除原选中行的上一行
dgv.Rows.Insert(indexr + 1 - dgvsrc.Count, dgvR) '将选中行的上一行插入到选中行的后面
For i As Integer = 0 To dgvsrc.Count - 1 '选中移动后的行
dgv.Rows(indexr + 1 - i).Selected = True
Next
Else
MsgBox("已是最后一行,无法下移")
Exit Sub
End IfEnd If
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
Public Sub TopDGV(ByVal dgv As DataGridView) '置顶函数
Try
Dim dgvsrc As DataGridViewSelectedRowCollection = dgv.SelectedRows ''获取选中行的集合
If (dgvsrc.Count > 0) Then
Dim indexr As Integer = dgv.SelectedRows(0).Index '/获取当前选中行的索引
If indexr > 0 Then '如果该行不是第一行
Dim dgvr As DataGridViewRow = dgv.Rows(indexr) '/ 获取选中行的上一行
dgv.Rows.RemoveAt(indexr) '删除原选中行的上一行
dgv.Rows.Insert(0, dgvr) '将选中行的上一行插入到选中行的后面
For i As Integer = 0 To dgv.Rows.Count - 1 '选中移动后的行
If i <> 0 Then
dgv.Rows(i).Selected = False
Else
dgv.Rows(i).Selected = True
End If
Next
End IfEnd If
Catch ex As Exception
MessageBox.Show(ex.ToString())
End Try
End Sub
Public Sub BotDGV(ByVal dgv As DataGridView) '置底函数
Try
Dim dgvsrc As DataGridViewSelectedRowCollection = dgv.SelectedRows ''获取选中行的集合
If (dgvsrc.Count > 0) Then
Dim indexr As Integer = dgv.SelectedRows(0).Index '/获取当前选中行的索引
If indexr < dgv.Rows.Count - 1 Then '如果该行不是最后行
Dim dgvR As DataGridViewRow = dgv.Rows(indexr) '获取选中行的下一行
dgv.Rows.RemoveAt(indexr) '/删除原选中行的上一行
Dim ncount As Integer = dgv.Rows.Count
dgv.Rows.Insert(ncount, dgvR) '将选中行的上一行插入到选中行的后面
For i As Integer = 0 To dgv.Rows.Count - 1
If (i <> dgv.Rows.Count - 1) Then
dgv.Rows(i).Selected = False
Else
dgv.Rows(i).Selected = True
End If
NextEnd If
End If
Catch ex As Exception
MessageBox.Show(ex.ToString())
End Try
End Sub