C#:如何使在文本框中按下Enter键触发一个按钮,但仍然允许快捷键,比如“Ctrl + A键”得过来吗?
题
很抱歉的长标题,但我想不出另一种方式把它。
我有这样的:
private void textBoxToSubmit_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
buttonSubmit_Click((object)sender, (EventArgs)e);
}
}
...为了使在文本框中按下Enter键触发“提交”按钮。然而,这也可以防止快捷键从经历。 (不太清楚它有什么用,也许只有多键连击办?)
ShortcutsEnabled被设置为真。
提前感谢!
解决方案
你能不能在窗体属性窗口使用AcceptButton
?这将设置默认行为<大骨节病>输入骨节病>按键,但你仍然可以使用其他快捷键。
其他提示
如果你想仅当用户在文本框中返回到触发一个动作,则可以分配所需的按钮的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
}
您可以使用按键响应,而不是KEYUP或它的KeyDown更有效 这里是如何处理
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
e.Handled = true;
button1.PerformClick();
}
}
希望它的工作原理
您不需要任何客户端代码,如果这样做是ASP.NET。 下面的例子是用具有fontawesome图标搜索按钮一个自举输入框。
您会看到,在地方使用普通的
标记带班“输入组”的我已经使用了ASP:面板。 DefaultButton属性设置为我的按钮的ID,是卓有成效的。
在下面的例子,在输入文本框中键入的东西后,你只需点击进入,这将导致提交。
<asp:Panel DefaultButton="btnblogsearch" runat="server" CssClass="input-group blogsearch">
<asp:TextBox ID="txtSearchWords" CssClass="form-control" runat="server" Width="100%" Placeholder="Search for..."></asp:TextBox>
<span class="input-group-btn">
<asp:LinkButton ID="btnblogsearch" runat="server" CssClass="btn btn-default"><i class="fa fa-search"></i></asp:LinkButton>
</span></asp:Panel>
不隶属于 StackOverflow