2010-02-11 2 views
2

Enter/Return 키를 사용하여 새 줄을 만드는 것을 방지하기 위해 여러 줄로 된 컨트롤이 있습니다.Control + Enter/Return 키는 어떤 문자 값을 전송합니까?

이상하게도 "AcceptsReturn"을 False로 설정해도 문제가 해결되지 않습니다. 이 잘 작동

Private Sub txtAddr_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtAddr.KeyPress 
    If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then 
     e.Handled = True 
    End If 
End Sub 

, 제어 타격 발견 QA 사람들 그러나 하나 + 여전히 입력 줄 바꿈에두고 :

그래서 우리는 다음과 같은 추가.

어떻게 예방할 수 있습니까?

그리고 AcceptsReturn이 False로 표시되는 이유는 정상적으로 작동하지 않는 이유는 무엇입니까? 그것의 의도 된 목적은 무엇입니까?

답변

3

Ctrl + Enter는 줄 바꿈 (ASCII 10)을 생성 할 가능성이 큽니다.

특정 시스템에 따라 다를 수 있습니다.

캐리지 리턴 (ASCII 13) 및 줄 바꿈을 확인하는 경우에는 대부분의 바닥이 덮여있을 수 있습니다.

0

KeyPress 이벤트가 아닌 KeyDown에서이를 트래핑해야한다고 생각합니다.

2

AcceptsReturn 속성은 다른 작업을 수행합니다. Enter 키는 대개 대화 상자의 OK 버튼을 조작합니다. AcceptsReturn = true이면 Enter 키는 확인 단추 Click 이벤트를 활성화하는 대신 텍스트 상자에 새 행을 입력합니다.

Ctrl + Enter를 누르면 줄 바꿈이 생성되고 TextBox는이를 새 줄로 취급합니다. 이 KeyDown 이벤트를 사용하여 모든 조합을 필터링하십시오.

private void textBox1_KeyDown(object sender, KeyEventArgs e) { 
    if ((e.KeyData & Keys.KeyCode) == Keys.Enter) e.SuppressKeyPress = true; 
} 
관련 문제