C #: Как сделать так, чтобы нажатие клавиши ввода в текстовом поле вызывало нажатие кнопки, но при этом позволяло проходить ярлыкам, таким как «Ctrl + A»? - PullRequest
27 голосов
/ 06 февраля 2010

Извините за длинный заголовок, но я не мог придумать другого способа выразить его.

У меня есть это:

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

... чтобы нажать клавишу ввода, в текстовом поле нажмите кнопку «Отправить». Однако это также предотвращает прохождение ярлыков. (не совсем уверен, что это связано с этим, может быть, только сочетания клавиш)?

ShortcutsEnabled имеет значение true.

Заранее спасибо!

Ответы [ 4 ]

38 голосов
/ 06 февраля 2010

Разве вы не можете использовать AcceptButton in для окна свойств форм? Это устанавливает поведение по умолчанию для нажатия клавиши Enter , но вы все еще можете использовать другие сочетания клавиш.

15 голосов
/ 16 декабря 2013

Если вы хотите, чтобы возврат вызывал действие только тогда, когда пользователь находится в текстовом поле, вы можете назначить нужной кнопке элемент управления 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
    }
12 голосов
/ 18 декабря 2014

Вы можете использовать KeyPress вместо KeyUp или KeyDown его более эффективным и вот как справиться

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

надеюсь, что это работает

1 голос
/ 02 апреля 2017

Вам не нужен код на стороне клиента, если вы делаете это на ASP.NET. Пример ниже представляет собой поле ввода boostrap с кнопкой поиска с иконкой fontawesome.

Вы увидите, что вместо обычного тега

с классом «input-group» я использовал asp: Panel. Свойство DefaultButton, установленное на идентификатор моей кнопки, делает свое дело.

В приведенном ниже примере, после ввода чего-либо в текстовое поле ввода, вы просто нажимаете ввод, и это приведет к отправке.

<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>
...