Probably FlyGrid not yet processed reception of focus, modify your method, as following:
'field indicating that dgDetail in process of receiving focus
Private Boolean inFocusing = false
' LostFocus handler
Private Sub dgDetail_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles dgDetail.LostFocus
If (Not dgDetail.ContainsFocus) And (Not inFocusing) Then
If Not SaveRow(dgDetail, dgDetail.Selected, CheckSameRow:=False) Then
inFocusing = True 'enter into receiving focus
Try
dgDetail.Focus()
SelectRowInGrid(dgDetail, m_SelectedCtrl)
Finally
inFocusing = False ' exit from receiving focus
End Finally
End If
End If
End Sub