2014-09-02 2 views
0

winapp 프로젝트에서 Ctrl + Enter keydown 이벤트를 처리하려고합니다.handle Ctrl + C에서 여러 줄 입력란에 입력하십시오.

private void txtAnswer_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode==Keys.Enter && e.KeyCode==Keys.Control) 
     { 
      //Some statements. 
     } 
    } 

하지만 작동하지 않습니다. 어떤 도움이 필요합니까?

+0

봐는 - 그 다른 값 때 어떻게'e.KeyCode' 동시에'Keys.Enter'와'Keys.Control' 할 수 있는가? –

+0

나는 비슷한 것을했습니다 ... 나는 모양과보고를 할 것입니다 ... – Noctis

답변

2

그것은해야한다 : Ctrl + Enter

private void txtAnswer_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter && Control.ModifierKeys == Keys.Control) 
    { 
     e.Handled = false; 
     MessageBox.Show("Ok KeyDown"); 
    } 
} 

편집 : 줄 바꿈 방지하려면 : 당신의 상태에

private bool keydowncalled = false; 
private void txtAnswer_KeyDown(object sender, KeyEventArgs e) 
{ 
    keydowncalled = false; 

    if (e.KeyData == (Keys.Control | Keys.Enter)) 
    { 
     keydowncalled = true; 
     MessageBox.Show("Ok KeyDown"); 
    } 
} 

private void txtAnswer_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (keydowncalled == true) 
    { 
     // Stop the newline from being entered into the control. 
     e.Handled = true; 
    } 
} 
+0

Lol ... 내가 그것을 발견했을 때, 당신은 그것을 썼습니다 ... 좋은 ... :) – Noctis

+0

@ Vishal Suthar, 작동하고 있지만 여전히 새로운 라인이 만들어졌습니다. 새 줄을 방지하는 방법? –

+0

@SKPaul ​​해결 ... 답변을 수정했습니다. –

6

키와 한정자를 검색하려면 e.KeyData이 아닌 e.KeyCode을 테스트하십시오. 즉, 비트 단위 OR을 Control 수정 키와 Enter 키입니다

if (e.KeyData == (Keys.Control | Keys.Enter)) 

참고 :이 경우.

편집 :

점은 이것이 당신이 무엇을해야하는 줄 바꿈 에 추가되는 것을 방지하기 위해 Ctrl 키 + 를 입력하는 경우 : 아래 Control.ModifierKeys

private void textBox1_KeyDown(object sender, KeyEventArgs e) 
{ 
    e.SuppressKeyPress = (e.KeyData == (Keys.Control | Keys.Enter)); 
} 
관련 문제