C#:如何使在文本框中按下Enter键触发一个按钮,但仍然允许快捷键,比如“Ctrl + A键”得过来吗?

StackOverflow https://stackoverflow.com/questions/2212237

很抱歉的长标题,但我想不出另一种方式把它。

我有这样的:

    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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top