net datagridview 多行上下移动代码

。.net datagridview 多行上下移动代码

  1.   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 If

            Catch 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 If

                End 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 If

                End 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
                        Next

                    End If
                End If
            Catch ex As Exception
                MessageBox.Show(ex.ToString())
            End Try
        End Sub
     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值