2009-03-24 2 views
2

이 코드를 사용하여 텍스트 상자의 KeyDown 이벤트에서 수정 자 키가 눌러져 있는지 확인합니다. 내가 실제 수정 키 이름이 아닌 부울 결과를 표시하며 문자 A와 같은 비 보조 키가있는 경우 수정 자 키의 끝에 누르는 비 보조 키를 표시 할 방법C# : keydown 이벤트에서 수정 자 키 이름 + 비 수정 자 키 이름을 어떻게 표시합니까?

private void txtShortcut_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Shift || e.Control || e.Alt) 
     { 
      txtShortcut.Text = (e.Shift.ToString() + e.Control.ToString() + e.Alt.ToString() + e.KeyCode.ToString()); 

     } 
    } 

같은 시간에 너무 눌러? 동일한 txtShortcut.Text =();에서 모든 작업을 수행 할 수있는 방법이 있습니까? 선?

+0

중복 : http://stackoverflow.com/questions/676518/c-in-the-keydown-event-of-a-textbox-how-do-you-detect-currently-pressed-modifi –

+0

그 후속 질문, 중복되지 않습니다. 그는이 질문에서 이전 질문의 대답을 사용하고 있습니다. – RvdK

답변

2

을 확인하실 수 있습니다. 더 인간 친화적 인 열거 형이기 때문에 확인할 수 있습니다. ? 또한, 단지

string s = (e.Shift ? "[Shift]+" : "") + (e.Control ? "[Ctrl]+" : "") 
      + (e.Alt ? "[Alt]+" : "") + e.KeyCode; 
1

은을 사용 : 운영자

txtShortcut.Text = (e.Shift? "Shift ": "") + (e.Control? "Control ": "") + (e.Alt? "Alt ": "") + e.KeyCode.ToString()); 
0

을 당신은 부울 값에 따라 올바른 문자열을 표시해야합니다. 단일 명령문에서 이와 같은 작업을 수행하려면? : 연산자 :

txtShortcut.Text = (e.Shift ? "[Shift]" : string.Empty) + 
        (e.Control ? "[Ctrl]" : string.Empty) + ...; 

일반적으로,는 다음과 같습니다

<someBool> ? <ifTrue> : <ifFalse> 

그것은 모든 종류의와 함께 작동합니다. 당신이 .NET 3을 사용하는 경우

0

, 당신은 조합 키의 지역화 된 이름에 대한 지원이있는 KeysConverter 클래스를 사용하는 것이 좋습니다 : 그렇지 않으면

var kc = new KeysConverter(); 
var result = kc.ConvertToString(e.KeyCode); 

을, 당신은 삼항 연산자와 함께 직접 작업을 수행 할 수 있습니다 :

var keys = (e.Shift ? "[Shift]+" : string.Empty) 
      + (e.Control ? "[Ctrl]+" : string.Empty) 
      + (e.Alt ? "[Alt]+" : string.Empty) 
      + e.KeyCode; 
관련 문제