C#: как сделать нажатие enter в текстовом поле триггером кнопки, но все же разрешить ярлыки, такие как "Ctrl+A", чтобы пройти?

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

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

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

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

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

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

4 ответов


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


Если вы хотите, чтобы return запускал действие только тогда, когда пользователь находится в текстовом поле, вы можете назначить нужную кнопку 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 - ... Пример ниже-поле ввода boostrap с кнопкой поиска со значком fontawesome.

вы увидите, что вместо обычного тега с классом "input-group" я использовал ASP:Panel. Свойство DefaultButton, установленное на идентификатор моей кнопки, делает трюк.

в примере ниже, после ввода чего-то в текстовом поле ввода, вы просто нажмите 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>