Reputation: 1428
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
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
Reputation: 405
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
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
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
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