Question

Here is my code for Cell End Edit and Selection Changed event:

Private Sub dvJOBranch_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dvJOBranch.CellEndEdit

    'get the current column and row index
    curCol = e.ColumnIndex
    curRow = e.RowIndex

    'if the cell is blank, set it to zero
    If IsDBNull(dvJOBranch.Rows(curRow).Cells.Item(curCol).Value) Then
        dvJOBranch.Rows(curRow).Cells.Item(curCol).Value = 0

        'convert it to integer
    Else
        dvJOBranch.Rows(curRow).Cells.Item(curCol).Value = _
            Convert.ToInt32(dvJOBranch.Rows(curRow).Cells.Item(curCol).Value.ToString())
    End If



    'if the user do mouseclick in datagridview
    isMouseClick = dvJOBranch.Capture.ToString()

    'if the user does not click any cell from the datagridview
    If isMouseClick = False Then

        isEdited = True
        iColumnindex = e.ColumnIndex
        irowindex = e.RowIndex

        If dvJOBranch.CurrentRow.Index = dvJOBranch.RowCount - 1 Then
            If dvJOBranch.CurrentCell.ColumnIndex < dvJOBranch.ColumnCount - 1 Then
                dvJOBranch.CurrentCell = dvJOBranch.Item(iColumnindex + 1, irowindex)
            End If
            isEdited = False
        End If

    End If



End Sub

Private Sub dvJOBranch_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles dvJOBranch.SelectionChanged

    'if the user does not click any cell from the datagridview
    If isMouseClick = False Then

        If isEdited Then
            If dvJOBranch.CurrentCell.ColumnIndex < dvJOBranch.ColumnCount - 1 Then
                dvJOBranch.CurrentCell = dvJOBranch.Item(iColumnindex + 1, irowindex)
            Else
                dvJOBranch.CurrentCell = dvJOBranch.Item(2, irowindex + 1)
            End If
            isEdited = False
        End If


    End If

    'set it to false
    isMouseClick = False

End Sub

The function of this code is to move the current cell to the right after editing using ENTER key, In my code I also capture the mouse click if the user click any cell because it has errors If i do not capture the mouse click, What I'm trying to do now is to capture the Arrow keys while I'm editing. Because after editing a cell, for example when I press Arrow key UP, it moves to the right like the Function for my ENTER key instead of moving upward.

Any help and guide will be appreciated, Thank you

Was it helpful?

Solution

You could be using the KeyUp event of the datagridview like this :

Private Sub dvJOBranch(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles dvJOBranch.KeyUp
    If e.KeyCode = Keys.Up Then
        ' Do your code here
    End If
End Sub

And if you want the enter key to be handled in there you could just use a select case also :

 Private Sub dvJOBranch(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles dvJOBranch.KeyUp
    Select Case e.KeyCode
        Case Keys.Enter
            ' Code for enter
        Case Keys.Up
            ' Code for up arrow
            'Etc
    End Select
End Sub
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top