什么是根据用户在 .NET TextBox 中输入的 Enter 键 (Keys.Enter) 执行操作的最佳方式,假设该键输入归属于将 Enter 键抑制到 TextBox 自身的所有者 (e.Handled = true)?
假设本问题的目标行为不是按下表单的默认按钮,而是执行其他一些自定义处理。
假设本问题的目标行为不是按下表单的默认按钮,而是执行其他一些自定义处理。
添加一个键盘按键事件,捕获回车键。
程序上看起来像这样:
//add the handler to the textbox
this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(CheckEnterKeyPress);
然后在代码中添加一个处理程序...
private void CheckEnterKeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Return)
{
// Then Do your Thang
}
}
为了将函数与文本框的按键事件链接起来,请在窗体的designer.cs中添加以下代码:
this.textbox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.OnKeyDownHandler);
现在在同一窗体的 cs 文件中定义函数 'OnKeyDownHandler':
private void OnKeyDownHandler(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
//enter key has been pressed
// add your code
}
}
textBox1.KeyPress += (sndr, ev) =>
{
if (ev.KeyChar.Equals((char)13))
{
// call your method for action on enter
ev.Handled = true; // suppress default handling
}
};
ev.Handled = true;
即可。已更新帖子。 - Nate如果您希望在程序执行时某个按钮能够处理回车键,只需将窗体的AcceptButton属性指向该按钮即可。
例如:this.AcceptButton = StartBtn;
像这样设置KeyPress事件:
this.tMRPpart.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tMRPpart_KeyPress);
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);
}
}
}