[C#] Enter를 누를 때 ‘Ding’중지

매우 간단한 Windows Forms 응용 프로그램이 있습니다. 그리고 Windows (또는 적어도 Windows Forms 응용 프로그램)에서 한 줄 TextBox 컨트롤 내부에서 Enter 키를 누르면 딩이 들립니다. 그것은 한 줄 TextBox이기 때문에 개행을 입력 할 수 없음을 나타내는 불쾌한 소리입니다.

괜찮습니다. 그러나 내 양식에는 1 개의 TextBox와 검색 단추가 있습니다. 그리고 사용자가 입력을 완료 한 후가되지 않도록, Enter 키를 눌러 검색을 수행 할 수 있도록하고 있는 검색 버튼을 클릭 마우스를 사용 할 수 있습니다.

하지만이 딩 소리가 발생합니다. 매우 성가신 일입니다.

내 양식에서 소리가 전혀 재생되지 않도록하려면 어떻게해야합니까?

@David H-Enter 누름을 감지하는 방법은 다음과 같습니다.

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



답변

Form.AcceptButton 속성을 확인하십시오 . 이를 사용하여 양식의 기본 단추를 지정할 수 있습니다.이 경우에는 Enter를 누르십시오.

문서에서 :

이 속성을 사용하면 사용자가 응용 프로그램에서 Enter 키를 누를 때 발생하는 기본 작업을 지정할 수 있습니다. 이 속성에 할당 된 단추는 현재 폼에 있거나 현재 폼의 컨테이너 내에있는 IButtonControl이어야합니다.

사용자가 이스케이프를 누를 때를위한 CancelButton 속성 도 있습니다 .


답변

나를 위해 작동합니다.

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는 정말 트릭입니다. 도움이 되었기를 바랍니다.


답변

시험

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


답변

e.SuppressKeyPress = true;“if”문을 추가 하기 만하면 됩니다.

private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        //If true, do not pass the key event to the underlying control.
        e.SuppressKeyPress = true;  //This will suppress the "ding" sound.*/

        // Perform search now.
    }
}


답변

KeyUp 또는 KeyDown 대신 KeyPress를 더 효율적으로 사용할 수 있으며 처리 방법은 다음과 같습니다.

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

그리고 ‘Ding’에게 평화를 전하세요


답변

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

      }
   }
}


답변

나는 이것이 나를 위해 일한 KeyDown을 처리하려고 시도하는 동안이 게시물을 우연히 발견했습니다.

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

키 누르기를 누르면 이벤트가 기본 컨트롤로 전송되는 것을 중지합니다. 해당 텍스트 상자 내에서 Enter 키가 수행하는 모든 작업을 수동으로 처리하는 경우 작동합니다. Visual Basic에 대해 죄송합니다.