2011-10-11 4 views
0

KeyDown 이벤트에서 Bool 변수를 변경하기 위해 여러 개의 키를 바인딩하려고하지만 별표/별표를 트리거하는 방법을 파악할 수 없습니다. 다음 코드에서 왼쪽 Shift 키와 키 (*)는 :KeyDown 이벤트에 여러 키 묶기 (Shift + * (별표))

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.Multiply || keyData == (Keys.LShiftKey | Keys.OemQuotes)) 
    { 
     Valgt = true; 
    } 
} 

답변

1

이 대답은 불변 키보드 레이아웃되지 않습니다 그러나 이것은 미국-EN 키보드에 트릭을 할 것입니다. 그것은 강력하지는 않지만 지역 레이아웃에 맞게 조정할 수 있습니다.

if (keyData == Keys.Multiply || keyData == (Keys.Shift | Keys.D8)) 
{ 
    Valgt = true; 
} 

은 또는 당신 Control_KeyPress 이벤트를

private void Form1_KeyPress(object sender, KeyPressEventArgs e) 
{    
    if (e.KeyChar == '*') 
    { 
     Valgt = true; 
    } 
} 
+0

들으을 사용할 수 있지만이 제안했듯이 이미 계정에 미국 키보드를 촬영했습니다. 나는 보편적 인 별표 (*)를 찾고있다 :-) – Birdman

+0

내 코드와 당신 사이의 다른 차이점은 Keys.Shift를 Keys.LShift와 반대로 사용했다는 것이다. 제안 된 행에서 디버거를 중단하고 keyData를 평가하면 Keys.Shift가 true 인 곳에서 Keys.LShift가 false로 평가된다는 것을 알 수 있습니다. 이 솔루션은 NumPad의 * 키와 Shift 및 숫자 8을 눌러서 처리합니다. 별표를 생성하는 또 다른 방법은 무엇입니까? – robowahoo

+0

나는 범용 별표 키 탐지를 찾고 있었다. 덴마크어 자판 배열이 있고 별표는 "숫자 8"단추에 있지만 대신 "입력"단추 바로 옆에 "작은 따옴표/큰 따옴표"단추가 있습니다. 별표 키 검색에 대한 보편적 인 솔루션을 기대했습니다. – Birdman

관련 문제