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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#:如何在文本框中按下输入触发按钮,但仍允许“Ctrl + A”等快捷方式通过?相关的知识,希望对你有一定的参考价值。

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

我有这个:

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

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

ShortcutsEnabled设置为true。

提前致谢!

答案

你能不能在表格属性窗口中使用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输入框。

您将看到,使用带有“输入组”类的常规<div>标签代替我使用了asp:Panel。将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>

以上是关于C#:如何在文本框中按下输入触发按钮,但仍允许“Ctrl + A”等快捷方式通过?的主要内容,如果未能解决你的问题,请参考以下文章

用户在文本框中按下回车的 JQuery 事件?

在文本框中按 Enter 时如何触发 HTML 按钮?

检测在 VB6 输入框中按下的取消

在位置访问权限中按下允许按钮后如何执行操作?

当用户在文本框中按下返回时,我可以取消回发吗?

在swt中按下按钮时如何在列表中搜索字符串