Link to home
Start Free TrialLog in
Avatar of paing0d
paing0d

asked on

Disable Enter key in Datagrid

I have a Datagrid with custom columns. These columns contain textboxes but also comboboxes and checkboxes. Now when a user presses the enter button when editing the values in a textfield column then a Datagrid event will be fired. This is something I totally not want. Is there a way to ignore the Enter key in a Datagrid? If I press enter in a textboxfield then the next row will be selected. I tried to catch the Enter key in the textboxes but it seems like they are overruled by this Datagrid event. Any idea to fix this problem?
ASKER CERTIFIED SOLUTION
Avatar of Jeffr0
Jeffr0

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Jeffr0
Jeffr0

My solution has a bonus feature in that it also ignores the arrow keys except for when you're inside the datagrid cell.  You can only use the tab key and mouse to navigate.

:)
Avatar of paing0d

ASKER

If I press enter the first time in my self made textfield column it does jump to the next row. If I keep pressing enter it stays there but does not go further. So I think it works after a key is pressed the first time? On every row it jumps to the next row when pressed the enter key (in the custom textfield column) but goes no further.

If I press other keys then Enter it blocks them too. I can't typ in my own made textfield columns anymore.
Oh well.  That's the best I can do for a 20 point question.  :)

It works pretty good when you don't have any custom columns, though, doesn't it??
Avatar of paing0d

ASKER

This did the trick:

    Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
        If (msg.WParam.ToInt32 = 13) Then
            Return True
        End If

        Return False
    End Function

Thanks for guiding me in the right direction.
Avatar of paing0d

ASKER

And if you want to filter out the arrow keys too just make it:

    Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
        Select Case msg.WParam.ToInt32
            Case 13, 37, 38, 39, 40
                Return True
        End Select

        Return False
    End Function