Mark Allanson
Mark Allanson

Reputation: 1428

.NET TextBox - Handling the Enter Key

What is definitively the best way of performing an action based on the user's input of the Enter key (Keys.Enter) in a .NET TextBox, assuming ownership of the key input that leads to suppression of the Enter key to the TextBox itself (e.Handled = true)?

Assume for the purposes of this question that the desired behavior is not to depress the default button of the form, but rather some other custom processing that should occur.

Upvotes: 62

Views: 73145

Answers (5)

tonyb
tonyb

Reputation: 459

Set the KeyPress event like this:

this.tMRPpart.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tMRPpart_KeyPress);

Then you can perform actions including detecting the 'enter' key in the event -

private void tMRPpart_KeyPress(object sender, KeyPressEventArgs e)
{
    // force any lower case characters into capitals
    if (e.KeyChar >= 'a' && e.KeyChar <= 'z')
        e.KeyChar -= (char)32;

    // If user presses return, tab to next tab stop
    if (e.KeyChar == (char)Keys.Return)
    {
        if (sender is Control)
        {
            // Move to next control
            SelectNextControl((Control)sender, true, true, true, true);
        }
    }
}

In my case I wanted the application to tab to the next field if the user pressed enter.

Upvotes: 3

In cases you want some button to handle Enter while program is executing, just point the AcceptButton property of the form to the button.

E.g.: this.AcceptButton = StartBtn;

Upvotes: 5

RSK
RSK

Reputation: 2221

Inorder to link the function with the key press event of the textbox add the following code in the designer.cs of the form:

 this.textbox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.OnKeyDownHandler);

Now define the function 'OnKeyDownHandler' in the cs file of the same form:

private void OnKeyDownHandler(object sender, KeyEventArgs e)
{

    if (e.KeyCode == Keys.Enter)
    {
       //enter key has been pressed
       // add your code
    }

}

Upvotes: 29

It Grunt
It Grunt

Reputation: 3378

Add a keypress event and trap the enter key

Programmatically it looks kinda like this:

//add the handler to the textbox
this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(CheckEnterKeyPress);

Then Add a handler in code...

private void CheckEnterKeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
        if (e.KeyChar == (char)Keys.Return)

        {
           // Then Do your Thang
        }
}

Upvotes: 89

Nate
Nate

Reputation: 30656

You can drop this into the FormLoad event:

textBox1.KeyPress += (sndr, ev) => 
{
    if (ev.KeyChar.Equals((char)13))
    {
        // call your method for action on enter
        ev.Handled = true; // suppress default handling
    }
};

Upvotes: 9

Related Questions