我有一个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
答案 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