2012-08-16 5 views
7

다음 코드는 Enter/Return 키를 누를 때 MessageBox를 표시하지 않습니다.Enter 키 감지 C#

다른 키 (예 : 문자/숫자)의 경우 MessageBox는 False를 표시합니다.

private void cbServer_TextChanged(object sender, EventArgs e) 
{ 
    if (enterPressed) 
    { 
     MessageBox.Show("Enter pressed"); 
    } 
    else 
     MessageBox.Show("False"); 
} 

private void cbServer_Keydown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return) 
    { 
     enterPressed = true; 
     MessageBox.Show("Enter presssed: " + enterPressed); 

    } 
    else 
     enterPressed = false; 
} 

아이디어가 있으십니까?

EDIT : 위의 코드는 _Keydown과 관련된 문제라고 생각하여 게시했습니다.

양식 디자이너 클래스
+6

에 표시된 모든 키를 감지합니다. 나는 그것을 볼 수 없다 –

+0

또한. 디버깅을 시도 했습니까? OEMReturn을 사용해야합니다. 또는 무엇입니까 –

+0

cbServer는 어떤 종류의 제어입니까? 콤보 박스? wpf 또는 winforms 응용 프로그램입니까? – Steve

답변

5

이 때 때문이다 당신을 누르십시오 TextChanged 이벤트가 발생하지 않습니다 입력하십시오.

+0

감사합니다. – k1f1

7

에게 (formname.designer.cs)이 추가

this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Login_KeyPress); 

및 백본 코드에 코드를 추가 (formname.cs) :

void Login_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     if (e.KeyChar == (char)13) 
      MessageBox.Show("ENTER has been pressed!"); 
     else if (e.KeyChar == (char)27) 
      this.Close(); 
    } 
+0

인 것처럼 보입니다. 폼을 닫을 때도 이스케이프 키를 처리 할 수 ​​있습니다. 유용 할 수도 있습니다. –

+0

this.cbServer.KeyPress + = new System.Windows.Forms.KeyPressEventHandler .cbServer_KeyPress); 이것은 designer.cs 파일에 이미 있습니다 ... – k1f1

+0

죄송합니다. Keypress가 아닌 KeyDown을 사용하는 것을 볼 수 있습니다. 사용을 시도 할 것입니다. – k1f1

0
private void textBox_PreviewKeyDown(object sender, KeyEventArgs e) 
{ 
      if (e.Key == Key.Enter) 
      { 
       MessageBox.Show("Enter key pressed"); 
      } 
      else if (e.Key == Key.Space) 
      { 
       MessageBox.Show("Space key pressed"); 
      } 
} 

사용 PreviewKeyDown 이벤트 전에 텍스트 상자 또는 입력 잘못된 메시지 상자 쇼를 수행하는 방법