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

Jon*_*han 27 c# textbox enter submit keydown

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

我有这个:

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

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

ShortcutsEnabled设置为true.

提前致谢!

Rob*_*per 40

你不能AcceptButton用于表单属性窗口吗?这将设置Enter按键的默认行为,但您仍然可以使用其他快捷方式.


Had*_*ron 15

如果希望返回仅在用户位于文本框中时触发操作,则可以将所需按钮分配给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
    }
Run Code Online (Sandbox Code Playgroud)


Maw*_*rdy 12

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

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

希望它有效