Vb.net DevXPress GridView焦点在右键单击时不更新

Vb.net DevXPress GridView焦点在右键单击时不更新,vb.net,gridview,devexpress,right-click,Vb.net,Gridview,Devexpress,Right Click,我有一个DevExpress datagridview,其中列出了员工必须完成的一些工作。实际上,右键单击作业行,然后选择用于启动程序不同部分的菜单项。填充到程序下一部分的信息来自FocusedRowHandle Dim someString as String = gvMyGV.GetRowCellValue(gvMyGV.FocusedRowHandle, "ColumnHeader") 现在,如果员工左键单击该行以选中该行,然后右键单击->菜单项以启动下一步,则一切正常。但是,如果他们右

我有一个DevExpress datagridview,其中列出了员工必须完成的一些工作。实际上,右键单击作业行,然后选择用于启动程序不同部分的菜单项。填充到程序下一部分的信息来自FocusedRowHandle

Dim someString as String = gvMyGV.GetRowCellValue(gvMyGV.FocusedRowHandle, "ColumnHeader")
现在,如果员工左键单击该行以选中该行,然后右键单击->菜单项以启动下一步,则一切正常。但是,如果他们右键单击尚未高亮显示的任何其他行,则FocusRowHandle在启动下一阶段之前不会更新到新单击的行,从而导致它加载在他们执行右键单击之前选择的作业的信息

“DevEx选定行”高亮显示会以可视方式更新该行,该行变为黄色,但FocusedRowHandle值会一直保持到上下文菜单关闭后

我需要在右键单击时更新行句柄,然后再加载ContextMenu

找到的解决方案:

 Private Sub gvMyGV_MouseDown(sender As Object, e As MouseEventArgs) Handles gvMyGV.MouseDown
    If e.Button = MouseButtons.Right Then
        Dim hitInfo As GridHitInfo = gvMyGV.CalcHitInfo(New Point(e.X, e.Y))
        gvStatus.FocusedRowHandle = hitInfo.RowHandle
    End If
End Sub

这就是他们一直以来的方式。下面是我从一个应用程序中提取的一些代码,我需要修复它,但它使用的是DevExpress 8,但应该是相同的

Private Sub GridView2_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles GridView2.MouseDown
        If e.Button = MouseButtons.Right Then
            Dim view As GridView = CType(sender, GridView)
            If view Is Nothing Then Return
            ' obtaining hit info
            Dim hitInfo As GridHitInfo = view.CalcHitInfo(New Point(e.X, e.Y))
            ' switching focus
            view.FocusedRowHandle = hitInfo.RowHandle
        End If
End Sub

这并不是你唯一的控制。LClick设置活动/聚焦项目,而RClick不设置。您必须在RCLick或MouseDown事件中说明这一点,但在上下文菜单关闭后会这样做。与中一样,我可以右键单击一行以打开关联菜单,然后左键单击GridControl的空白区域,选择将正确更新。在CM关闭后,2-3个其他事件和数不清的代码行已经开始运行。仅单击不会激活控件。即使在列表框上打开一个空的CM也不会改变焦点或选择该项目。我认为我的第一条评论给人的感觉是有争议的,这不是我的本意。你知道其他几个事件是什么吗,这样我就可以尝试捕捉它们并提取我需要的数据了?因为它在关闭后会更新,所以我假设数据就在那里的某个地方。在mousedown事件中,获取鼠标XY,转换为项目/行引用以在菜单打开之前获取相关信息。常规DGV对此有测试相关方法;你的也可以。一般来说,如果菜单需要使用控件中的一些动态信息(如DGV.RowYep),则在CM打开事件中执行类似操作为时已晚。请在发布之前解决此问题。感谢你的回答。