net datagridview 多行上下移动代码

本文提供了一种使用Visual Basic .NET实现DataGridView中行上下移动、置顶及置底的方法。包括了上移、下移、置顶和置底四个功能函数,并详细展示了如何通过这些函数来操作DataGridView中的选定行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

。.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
     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值