Windowsフォーム-Enterキーを押すと送信ボタンがアクティブになりますか?


95

フォームの任意の場所でEnterキーを押して、送信ボタンイベントを強制的に発生させるにはどうすればよいですか?


8
では、マットハミルトンの回答でAcceptButtonプロパティを押してみませんか。
ムクス

「this.Form.DefaultButton = MyButton.UniqueID;」を使用します
Bino Kochumol Varghese

回答:


196

あなたが設定した場合FormAcceptButtonの1にプロパティをButton上のForm、あなたはデフォルトでその動作を取得します。

それ以外の場合は、KeyPreviewプロパティをtrueに設定し、FormそのKeyDownイベントを処理します。Enterキーを確認し、必要なアクションを実行できます。


8
Escapeキープレスを処理するためのCancelButtonを忘れないでください
WholeLifeLearner

1
驚くばかり!私は私のFramewrokをもっとよく知る必要があります;)
ジャック・

24
private void textBox_KeyDown(object sender, KeyEventArgs e) 
{
    if (e.KeyCode == Keys.Enter)
        button.PerformClick();
}

22

フォームのプロパティでボタンを「AcceptButton」として指定すると、フォームでの「Enter」キープレスをキャッチして、そのコントロールにルーティングします。

方法:デザイナ使用してWindowsフォームボタンを承諾ボタンとして指定する」を参照し、その概要のいくつかの例外(複数行のテキストボックスなど)に注意してください


リンクをありがとう、私を抱える例外。
ubiquibacon

このリンクは停止したようです。
JAD 2018

10

前述のように、フォームのAcceptButtonプロパティをボタンの1つに設定し、そのボタンのDialogResultプロパティをDialogResult.OKに設定して、呼び出し元がダイアログが受け入れられたか、閉じられたかを確認できるようにします。


6

KeyUpイベントに登録できますTextBox

private void txtInput_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
       DoSomething();
}

1
ちょうど私が探していたもの。ボタンのダイアログ結果をOKに設定していて、ENTERが機能するための不要なコードを書きたくありません!
Kristjan1215



0

フォームのKeyPreview属性をTrueに設定し、フォームレベルでKeyPressイベントを使用してEnterキーを検出します。検出時に、「送信」ボタンに必要なコードを呼び出します。


0
  if (e.KeyCode.ToString() == "Return")
  { 
      //do something
  }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.