【问题标题】:DevExpress GridView FocusedRowHandle Does not update on right clickDevExpress GridView FocusedRowHandle 右键单击​​不更新
【发布时间】:2014-12-30 13:33:19
【问题描述】:

我有一个 DevExpress 数据网格视图,其中列出了我们的员工必须完成的一些工作。在实践中,右键单击作业(行),并选择启动程序不同部分的菜单项。填充到程序下一部分的信息来自 FocusedRowHandle。

Dim someString as String = gvMyGV.GetRowCellValue(gvMyGV.FocusedRowHandle, "ColumnHeader")

现在,如果员工左键单击该行将其选中,然后右键单击 -> MenuItem 以启动下一步,则一切正常。但是,如果他们右键单击尚未突出显示的任何其他行,则 FocusRowHandle 直到下一个阶段启动后才会更新到新单击的行,导致它加载在执行右键单击之前选择的作业的信息.

DevEx 所选行突出显示视觉更新(行变为黄色),但 FocusedRowHandle 值一直保持到上下文菜单关闭后。

在加载 ContextMenu 之前,我需要在右键单击时更新 RowHandle。

找到的解决方案:

 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

【问题讨论】:

  • 这不是您的控件所独有的。 LClick 设置活动/焦点项目,RClick 不设置。您必须在 RCLick 或 MouseDown 事件中考虑这一点
  • 但是在上下文菜单关闭后它会这样做。如中,我可以右键单击一行以打开上下文菜单,然后左键单击 GridControl 的空白区域,选择正确更新。所以必须从某个地方获得价值。
  • CM 关闭后,2-3 个other 事件和数不清的代码行已经运行完成。 RClick 单独 不会激活控件。即使在 ListBox 之类的东西上打开一个空的 CM 也不会改变焦点或选择该项目。
  • 我认为我的第一条评论带有争议性,这不是我的本意。你知道其他几个事件是什么,以便我可以尝试捕获它们并提取我需要的数据吗?由于它在关闭后会更新,因此我假设数据在某处。
  • 我有一些类似你为 ListView CM 描述的东西。在 mousedown 事件中,获取鼠标 XY,转换为项目/行引用以在菜单打开之前获取相关信息。正常的 DGV 对此有 HitTest 相关的方法;你的也可以。 一般如果菜单需要使用 control.item 中的一些动态信息,例如 DGV.Row,则在 CM Opening 事件中执行此类操作为时已晚

标签: vb.net gridview devexpress right-click


【解决方案1】:

这是他们一直以来的方式。这是我从需要修复的应用程序中提取的一些代码,但它使用的是 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

【讨论】:

  • 是的,在你发帖之前就知道了。欣赏答案。
猜你喜欢
  • 2017-02-17
  • 2021-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-04
相关资源
最近更新 更多