144

非常に単純な Windows フォーム アプリケーションがあります。また、Windows (または、少なくとも Windows フォーム アプリケーション) では、単一行の TextBox コントロール内で Enter キーを押すと、Ding が聞こえます。これは、単一行の TextBox であるため、改行を入力できないことを示す不快な音です。

これで問題ありません。ただし、私のフォームには、1 つの TextBox と検索ボタンがあります。また、ユーザーが入力を終えた後に Enter キーを押して検索を実行できるようにしているため、マウスを使用して検索ボタンをクリックする必要はありませ

しかし、このディン音が発生します。とても迷惑です。

フォームでサウンドがまったく再生されないようにするにはどうすればよいですか?

@David H - Enterキーを押すことを検出する方法は次のとおりです。

private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        // Perform search now.
    }
}
4

16 に答える 16

237

わたしにはできる:

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{

    //Se apertou o enter
    if (e.KeyCode == Keys.Enter)
    {
        //enter key is down

        this.doSomething();

        e.Handled = true;
        e.SuppressKeyPress = true;

     }

 }

SuppressKeyPress は本当にトリックです。お役に立てば幸いです。

于 2013-05-03T03:02:34.787 に答える
63

Form.AcceptButtonプロパティを確認してください。これを使用して、フォームのデフォルト ボタンを指定できます。この場合は、Enter キーを押します。

ドキュメントから:

このプロパティを使用すると、ユーザーがアプリケーションで Enter キーを押したときに発生する既定のアクションを指定できます。このプロパティに割り当てられるボタンは、現在のフォーム上にあるか、現在のフォームのコンテナー内にある IButtonControl である必要があります。

ユーザーが Esc キーを押したときのCancelButtonプロパティもあります。

于 2011-06-09T09:55:03.790 に答える
57

試す

textBox.KeyPress += new KeyPressEventHandler(keypressed);

private void keypressed(Object o, KeyPressEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        e.Handled = true; //this line will do the trick
    }
}
于 2011-06-09T09:54:25.543 に答える
9

SuppressKeyPress処理後にキーストロークの継続処理を停止するために使用します。

public class EntryForm: Form
{
   public EntryForm()
   {
   }

   private void EntryTextBox_KeyDown(object sender, KeyEventArgs e)
   {
      if(e.KeyCode == Keys.Enter)
      {
         e.Handled = true;
         e.SuppressKeyPress = true;
         // do some stuff

      }
      else if(e.KeyCode == Keys.Escape)
      {
          e.Handled = true;
          e.SuppressKeyPress = true;
          // do some stuff

      }
   }

   private void EntryTextBox_KeyUp(object sender, KeyEventArgs e)
   {
      if(e.KeyCode == Keys.Enter)
      {
         // do some stuff

      }
      else if(e.KeyCode == Keys.Escape)
      {
         // do some stuff

      }
   }
}
于 2015-09-15T07:59:51.373 に答える
2

これがうまくいった KeyDown を処理しようとしているときに、この投稿に出くわしました。

If e.KeyCode = Keys.Enter Then
   e.SuppressKeyPress = True
   btnLogIn.PerformClick()
End If

Key Press を抑制すると、基になるコントロールにイベントが送信されなくなります。これは、入力キーがそのテキストボックス内で行うすべてを手動で処理している場合に機能するはずです。Visual Basic について申し訳ありません。

于 2013-04-26T14:43:02.007 に答える
1
$("#txtSomething").keypress(function (e) {
        if (e.which == 13) {

            e.Handled = true; //This will prevent the "ding" sound

            //Write the rest of your code
        }
    });
于 2013-11-13T00:58:13.927 に答える
0

検索ボタンのIsDefaultプロパティを に設定しますtrue。これにより、デフォルトのボタンになり、Enter が押されると自動的にクリックされます。

于 2011-06-09T09:56:03.220 に答える
0

テキストボックスの複数行をtrueに設定してから、Enterキーの押下を処理できます。

private void yourForm_Load(object sender, EventArgs e)
    {
        textBox1.Multiline = true;
    }

//then write your TextBox codes
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        // doSomething();
    }
}
于 2020-02-22T09:43:44.450 に答える
-2
void RTextBox_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyData == Keys.Enter)
    {
        //do ...
        bool temp = Multiline;
        Multiline = true;
        e.Handled = true;
        Multiline = temp;
    }
}
于 2013-03-02T15:44:50.447 に答える