29

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

我有这个:

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

...为了使在文本框中按下回车键触发“提交”按钮。但是,这也会阻止快捷方式通过。(不太清楚这与它有什么关系,也许只有多键组合?)

ShortcutsEnabled 设置为 true。

提前致谢!

4

5 回答 5

41

您不能AcceptButton在表单属性窗口中使用吗?这会设置Enter按键的默认行为,但您仍然可以使用其他快捷键。

于 2010-02-06T07:00:50.163 回答
16

如果您希望仅当用户在文本框中时返回触发操作,您可以将所需的按钮分配给 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
    }
于 2013-12-16T18:04:51.063 回答
14

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

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

希望它有效

于 2014-12-17T21:22:12.073 回答
1

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

您会看到,我使用了一个 asp:Panel,而不是使用带有“input-group”类的常规 <div> 标签。DefaultButton 属性设置为我的按钮的 id,可以解决问题。

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

<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>
于 2017-04-02T07:49:09.907 回答
0

https://stackoverflow.com/a/16350929/11860907

如果您e.SuppressKeyPress = true;按照此链接中的答案所示添加,您将抑制发生的烦人的叮当声。

于 2020-08-25T18:07:08.437 回答