C#:如何在文本框中按下输入触发按钮,但仍允许“Ctrl + A”等快捷方式通过?

很抱歉很长的标题,但我想不出另一种说法。

我有这个:

private void textBoxToSubmit_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { buttonSubmit_Click((object)sender, (EventArgs)e); } } 

…为了在文本框中按下输入,触发“提交”按钮。 但是,这也可以防止快捷方式通过。 (不太确定它与它有什么关系,也许只有多键组合?)

ShortcutsEnabled设置为true。

提前致谢!

你不能在Forms Properties窗口中使用AcceptButton吗? 这会设置按Enter键的默认行为,但您仍然可以使用其他快捷方式。

如果您希望返回仅在用户位于文本框中时触发操作,则可以为AcceptButton控件指定所需的按钮,如下所示。

  private void textBox_Enter(object sender, EventArgs e) { ActiveForm.AcceptButton = Button1; // Button1 will be 'clicked' when user presses return } private void textBox_Leave(object sender, EventArgs e) { ActiveForm.AcceptButton = null; // remove "return" button behavior } 

您可以使用KeyPress而不是KeyUp或KeyDown,它更有效,这里是如何处理

 private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Enter) { e.Handled = true; button1.PerformClick(); } } 

希望它有效

如果这样做是ASP.NET,则不需要任何客户端代码。 下面的例子是一个带有一个带有fontawesome图标的搜索按钮的boostrap输入框。

您将看到,使用带有“输入组”类的常规

标签代替我使用了asp:Panel。 将DefaultButton属性设置为我的按钮的id,就可以了。

在下面的示例中,在输入文本框中键入内容后,您只需按Enter键即可生成提交内容。