DevExpress GridView FocusedRowHandle右键单击时不会更新

时间:2014-12-30 13:33:20

标签: vb.net gridview devexpress right-click

我有一个DevExpress datagridview,列出了我们的员工必须完成的一些工作。在实践中,右键单击作业(行),并选择用于启动程序的不同部分的menuItem。填充到程序下一部分的信息来自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

1 个答案:

答案 0 :(得分:0)

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