.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.
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
}
}
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
}
}
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
}
};
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;
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.
精彩评论