web-dev-qa-db-ja.com

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に設定されます。

前もって感謝します!

27
Jonathan Chan

フォームのプロパティウィンドウでAcceptButtonを使用できませんか?これにより、デフォルトの動作が設定されます Enter キーを押しますが、他のショートカットを使用することはできます。

39
Rob Cooper

ユーザーがテキストボックスにいるときにのみ戻り値でアクションをトリガーする場合は、次のように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
    }
15
Hadron

KeyUpまたはKeyDownの代わりにKeyPressを使用すると、より効率的です。処理方法は次のとおりです。

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

うまくいけばいい

12
Mawardy

これを行うのがASP.NETである場合、クライアント側のコードは必要ありません。以下の例は、fontawesomeアイコンが付いた検索ボタンを備えたboostrap入力ボックスです。

「input-group」のクラスで通常の<div>タグを使用する代わりに、asp:Panelを使用したことがわかります。私のボタンのIDに設定された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>
1
Guss Davey