VB.net : 根据当前界面dgv中的case ID 刷新右键菜单 AddToCase

Private Sub refreshTSMI_addToCase()     ‘  根据当前界面dgv中的case ID 刷新右键菜单 AddToCase

Dim listCaseIDs As List(Of Integer) = getDgvCaseIDs()  ‘   获取当前dgv 中的 case列表

‘  上面获取了当前的CaseID
        ‘  下面将这些 caseID 作为菜单的选项

TSMI_AddToCase.DropDownItems.Clear()    ‘  先清空菜单

‘   在右键菜单 AddToCaseToolStripMenuItem 中添加一个 子菜单项,显示为 New; 当点击此项时,其 sender.name也是  New
        ‘     注意:左边的 New 是显示在子菜单上的文字, 右边的 New 是这个子菜单的名字sender.name
        TSMI_AddToCase.DropDownItems.Add("New", Nothing, AddressOf clickTSM_addToCase).Name = "New"

For Each _caseId In listCaseIDs       ‘   将列表中的内容 加入菜单

TSMI_AddToCase.DropDownItems.Add(_caseId, Nothing, AddressOf clickTSM_addToCase).Name = _caseId

Next

End Sub

‘  当鼠标右键点击进入菜单 Add To New Case 时,将当前选中的这几笔交易加入到某个 可疑Case中
    Private Sub clickTSM_addToCase(ByVal sender As Object, ByVal e As System.EventArgs) Handles TSMI_AddToCase.Click

‘MessageBox.Show(" menuItem_Click " & sender.name)

If dtgAML.SelectedRows.Count = 0 Then    ‘  如果当前没有选择任何一笔交易
            MessageBox.Show("请选择至少一个alert,然后再添加入case", "一个case至少一个alert")
            Return    ‘  返回
        End If

‘If dtgAML.SelectedRows.Count > 10 Then    ‘  如果当前选择的交易笔数太多
        ‘    MessageBox.Show("目前选择的alert太多,请选择不要超过10笔,然后再加入case")
        ‘    Return    ‘  返回
        ‘End If

For Each _row As DataGridViewRow In dtgAML.SelectedRows   ‘ 对于所选中的这些行

If IsNothing(_row.HeaderCell.Value) Then
                Continue For    ‘  跳过去
            End If

If IsNumeric(_row.HeaderCell.Value.ToString) Then   ‘ 如果其行头是 数值(说明已经加入case了)
                MessageBox.Show(" 当前有些alert已经从属于某个case,请先 remove from case ,然后再添加 ", "不可重复添加alert")
                Return
            End If

If UserType = UTYPE_CMPLCEB Or UserType = UTYPE_CMPLCEC Then
                Dim strSus As String = _row.Cells(dtg_suspicious_index).Value.ToString.Trim
                If strSus = "N" Then
                    MessageBox.Show(" 当前有些alert的 " & UserType.ToString & " Suspicious选项为N,这样无法add to Case;请先设为Y,然后再添加 ", "不可添加不可疑的alert")
                    Return
                End If
            End If

Next

‘  现在已经有几笔交易被选中了,而且这些交易不属于任何一个case,并且都是可疑交易

Dim caseID As Integer = 0   ‘  caseID(如果为0,就是要将这几笔交易添加入新的case)

If IsNumeric(sender.name) Then   ‘  如果 sender.name 是数值
            ‘  这个名字就是 caseID  ,  将这些交易加入到已有的 case 中
            caseID = CInt(sender.name)   ‘  取得 caseID
        End If

Dim dgvCaseIDs As List(Of Integer) = getDgvCaseIDs()
        If caseID <> 0 And dgvCaseIDs.Contains(caseID) = False Then
            MessageBox.Show("这个case " & caseID & " 可能已经被提交,不能再增加新的内容")
            Return
        End If

Dim _dt As DataTable = getDataTableFromDgv(dtgAML, True)  ‘   获取当前dgv的选中的那些行组成的 dataTable

‘   首先实例化对象(安排一个员工去干活),将这几笔交易加入到 新的(caseID 为 0) 或者 已有的 case 中

Dim frm As _frmSuspiciousAlert_case = New _frmSuspiciousAlert_case(_dt, caseID, dgvCaseIDs)

‘   这里加了个委托,当操作成功时(成功将若干笔交易加入case),返回一个信号,以便改变 dgv的显示状态(行的颜色,行头,等等)
        ‘   委托5: 对员工(_frm2)交待(registerDelegate):你干完活要通知经理(CallBackManager),以便经理这里收尾工作(doThingWhenCallBack)
        frm.registerDelegate_saveCase(New CallBackManager_saveCase(AddressOf changeDGV_bySaveCaseResults))
        frm.registerDelegate_submitCase(New CallBackManager_submitCase(AddressOf submitAlerts1_tryCatch))
        frm.registerDelegate_rejectCase(New CallBackManager_rejectCase(AddressOf rejectAlerts1))

‘frm.Show()   ‘ 员工干活去了
        ‘  注意,如果用了上面的show,则在这个员工干活期间,经理处于空闲状态,可能又会让其他员工对同一条alert有重复的操作,可能造成混乱
        ‘  注意,这里应该用下面的 ShowDialog,在员工干活期间,让经理处于等待状态;  20200110
        frm.ShowDialog()   ‘  员工干活去了

End Sub

原文地址:https://www.cnblogs.com/gaoleionline/p/12175340.html

时间: 2024-08-03 00:18:31

VB.net : 根据当前界面dgv中的case ID 刷新右键菜单 AddToCase的相关文章

WinForm中UnityWebPlayer屏蔽右键菜单

百度到的解决方案: 鼠标右键的BUG 1).3D模型基本操作都是鼠标右键按下以后,拖动鼠标可以旋转模型视角,但是WPF加载后的UnityWebPlayer控件存在一个BUG:右键菜单 2).网上有很多方法去除右键菜单的问题.但都是在网页中去除,UnityWebPlayer封装好的控件还是会携带右键菜单.经过几番周折,也没有直接 在控件里去除右键菜单的问题.在网上,所有的方法都是在网页中修改JS代码解决右键菜单的问题.但是WPF是没有办法修改JS代码的.因为我 们不需要用到Untiy3D发布后的h

WPF 根据指定条件显示或禁止listView中的每一项的右键菜单

昨天要做一个ListView的右键菜单,需要根据listView绑定的集合中每个对象里的一个bool属性来决定是否显示该项的右键菜单,经过不懈的尝试和努力,最终实现了两种方案,一种是当该值为false时,可以点出右键菜单,但菜单项置灰不可选:另一种就是直接不出来菜单,右击没反应.下面是第一种方案: <ListView x:Name="ServerList" ItemsSource="{Binding Path=Servers}"> <ListVie

ios 界面开发中的常见元素

界面开发中的 CGPoint.CGSize.CGRect.CGRectMake.window(窗口).视图(view)简单记录 定义 /* Points. */ struct CGPoint { CGFloat x; CGFloat y; }; typedef struct CGPoint CGPoint; /* Sizes. */ struct CGSize { CGFloat width; CGFloat height; }; typedef struct CGSize CGSize; /*

java 界面编程中 JButton问题

在图形化界面编程中,按钮JButton使用时需要布置按钮的位置,更改按钮大小. 1)按钮初始化 JButton button = new JButton() /*在new JButton()括号中可以添加按钮显示的字符等 JButton button = new JButton("JButtonExample") 但是不能初始化按钮的大小和位置*/ 2)JButton按钮的在面板中位置的确定 对JButton大小的设置     ——因为JButton是属于小器件类型的,所以一般的set

从网站界面设计中领悟PPT设计灵感

一般的网站设计从规划到内容都非常注重用户的体验与可用性准则,网站整体风格简约,洁净,各个信息点都力图让浏览者了如指掌. 我们做ppt设计能够从一些优秀的网站界面中寻觅一些灵感. 1.网站中的版式的设计 我们从网站中寻觅ppt设计的灵感不是相对于一切的网站界面,必需经过仔细的挑选和区分.以上网页中上下构造的规划在网站设计中算是比较常见的一种.类比于一个新建的空白ppt文档,当我们用色块填充了一半的空间后,就曾经构成了一个上下构造的布局. 从网站中寻觅ppt设计的灵感还要学会对网站界面中内容的过滤,

[转]Android界面设计中的.9.png的使用技巧

[转]Android界面设计中的.9.png的使用技巧 在Android的设计过程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以任意调整大小的一种图片格式“.9.png”.这种图片是用于Android开发的一种特殊的图片格式,它的好处在于可以用简单的方式把一张图片中哪些区域可以拉伸,哪些区域不可以拉伸设定好,同时可以把显示内容区域的位置标示清楚. 本文结合一些具体的例子来看下.9.png的具体用法. 首先看下普通的.png资源与.9.png的资源区别: 普通的png资源

VB.Net / VB 如何隐藏 WebBrowser 控件 中之滚动

VB.Net / VB 如何隐藏 WebBrowser 控件 (组件) 中之滚动 由于 WebBrowser 控件组件 并未提供 滚动设定的属性 , 因此必须自行处理啰 ! > Private Sub WebBrowser1_DocumentCompleted _ (ByVal sender As System.Object, ByVal e As WebBrowserDocumentCompletedEventArgs) Handles _ WebBrowser1.DocumentComple

wpf中的默认右键菜单中的复制、粘贴、剪贴等没有本地化的解决方案

?? 现象: wpf开发中经常会遇到自己的界面已经本地化了, 但是系统默认的一些文字没有本地化, 比如:TextBox的右键菜单中Cut,Paste,Copy没有本地. 原因:机器装中.Net framework对应的Language pack没有装. 解决方法: 比如.net framework 4.0 的language pack的下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=23067 然后下载相应的语音包,系统

Android中ListView下拉刷新的实现

ListView中的下拉刷新是非常常见的,也是经常使用的,看到有很多同学想要,那我就整理一下,供大家参考.那我就不解释,直接上代码了. 这里需要自己重写一下ListView,重写代码如下: [java] view plain copy package net.loonggg.listview; import java.util.Date; import android.content.Context; import android.util.AttributeSet; import androi