Vb.net-DatagridView之右击删除选中行

简介: 做第一版《机房收费系统》时,听说有同学实现了一个功能:右击行,显示“下机”,点击“下机”删除某个正在上机的学生,把我羡慕的不得了,心想,在我机房重构的时候,也要实现这个功能,于是,开始期盼。。。终于等到了自己要做“选中下机”的这一天。。。

 做第一版《机房收费系统》时,听说有同学实现了一个功能:右击行,显示“下机”,点击“下机”删除某个正在上机的学生,把我羡慕的不得了,心想,在我机房重构的时候,也要实现这个功能,于是,开始期盼。。。终于等到了自己要做“选中下机”的这一天。。。


 整体思路:

   右击显示“下机”,和点击“下机”删除是分开的两个操作。要先根据我们鼠标右击的位置,确定所在的行,显示“下机”,然后才能点击“下机”,执行下机操作。


具体操作:

1、控件:ContextMenuStrip

   添加控件,编辑选项,在这里不仅可以添加“下机”,也可以添加“复制”“粘贴”等。



20160523111220536.png


2、代码:

'右击事件
    Private Sub DgvLineManage_CellMouseDown(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DgvLineManage.CellMouseDown
        If e.Button = Windows.Forms.MouseButtons.Right Then
            If e.RowIndex >= 0 Then
                '若行已是选中状态,就不再进行设置。
                If DgvLineManage.Rows(e.RowIndex).Selected = False Then
                    DgvLineManage.ClearSelection()
                    DgvLineManage.Rows(e.RowIndex).Selected = True
                End If
                '只选中一行时,设置活动单元格
                If DgvLineManage.SelectedRows.Count = 1 Then
                    DgvLineManage.CurrentCell = DgvLineManage.Rows(e.RowIndex).Cells(e.RowIndex)
                End If
                '获取鼠标右击位置后,弹出操作菜单
                ContextMenuStrip1.Show(MousePosition.X, MousePosition.Y)
            End If
        End If


end sub


Private Sub 删除ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 删除ToolStripMenuItem.Click
        For Each r As DataGridViewRow In DgvLineManage.SelectedRows
            If Not r.IsNewRow Then
                '添加下机操作的代码
                '**************我的下机代码**********
                If (MsgBox("确定要强制此用户下机吗?", MsgBoxStyle.OkCancel + MsgBoxStyle.Information, "提示") = MsgBoxResult.Ok) Then
                    '选中下机
                    Dim CardId As String
                    Dim RowNum As Integer '要删除的行
                    '获取选中行的卡号
                    CardId = Trim(DgvLineManage.SelectedRows(RowNum).Cells(0).Value.ToString())
                    Call OffLine(CardId)
                    MessageBox.Show("强制下机成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
                '**************我的下机代码**********
                '将选中的行移除。
                DgvLineManage.Rows.Remove(r)
            End If
        Next
    End Sub


 这是选中一行下机的操作,选中多行下机的操作,添加一个循环就可以了,读者可以自行探索一下。

  小结:

  功能很简单,想到这个功能不简单。我们要善于发现,敢于操作。














相关文章
|
6月前
|
XML 数据可视化 数据库
VB.NET—DataGridView控件教程详解
VB.NET—DataGridView控件教程详解
378 0
|
开发框架 .NET 数据库连接
在ASP.NET中实现选中、编辑和删除GridView数据项
在ASP.NET中实现选中、编辑和删除GridView数据项
在ASP.NET中实现选中、编辑和删除GridView数据项
|
算法 .NET
一起谈.NET技术,关于Winform下,获取Treeview中CheckBox选中项的技巧
背景 今天,在做一个指纹管理平台的界面上,遇到了一些问题,因为公司的基础库中没有针对Winform平台的操作,所以在一个部门选择的场景中,关于如何获取部门TreeView中被选中的项目被难住了。所幸还有一个神器叫做搜索引擎,故谷歌一番,发现Asp.net下的这个问题很好解决,但是关于Winform平台下的类似问题,如凤毛麟角啊! 当然,今天我也是查了很久,终于发现了两篇不错的文章,帮助我解决了这个问题,不敢独享,结合自己对使用其方法的心得,特意记录下来,并通过一个小例子和大家一起分享。
1054 0
|
前端开发 容器
一起谈.NET技术,Silverlight 拖动复制控件
  Silverlight 拖动复制控件,就是将控件从一个容器中向另一个容器中拖动时,不是移动控件而把该控件到另一个容器中。这种情形在程序中经常遇到,下面是我做的一个拖动复制控件的示例,仅供有这种需求的朋友们参考。
799 0
|
算法 .NET
关于Winform下,获取Treeview中CheckBox选中项的“.NET研究”技巧
背景 今天,在做一个指纹管理平台的界面上,遇到了一些问题,因为公司的基础库中没有针对Winform平台的操作,所以在一个部门选择的场景中,关于如何获取部门TreeView中被选中的项目被难住了。所幸还有一个神器叫做搜索引擎,故谷歌一番,发现Asp.net下的这个问题很好解决,但是关于Winform平台下的类似问题,如凤毛麟角啊! 当然,今天我也是查了很久,终于发现了两篇不错的文章,帮助我解决了这个问题,不敢独享,结合自己对使用其方法的心得,特意记录下来,并通过一个小例子和大家一起分享。
1165 0
|
前端开发 JavaScript .NET