Windows Forms 응용 프로그램의 KeyDown 이벤트 처리기에 응답하고 있습니다. 이 이벤트 처리기에서 KeyEventArgs
KeyCode를 문자열로 변환하려고합니다. 알파벳, 숫자 또는 숫자로 된 문자를 처리 할 때 문제가되지 않습니다. 이 일을하는 것은 아무것도 변경하지 않는 것 때문에 내가 ConvertToString
대신 ConvertToInvariantString
를 호출하고있어, 지금Windows Forms 키를 문자열로 변환
private string ConvertKeyCodeToString(System.Windows.Forms.Keys keyCode, bool shiftPressed)
{
string key = new System.Windows.Forms.KeysConverter().ConvertToString(keyCode);
if (key.Contains("NumPad"))
{
key = key.Replace("NumPad", "");
}
if (key.Equals("Space"))
{
key = " ";
}
if (!shiftPressed)
{
key = key.ToLower();
}
return key;
}
: < > , . ; ' "/?
내 현재의 변환 방법은 다음과 같은 문자를 변환하려고 할 때 difficutly 온다. 나는 문제를 일으키는 모든 특수 문자가 "oem"
으로 시작하는 것으로 보였다.
나에게는 최고의 솔루션은 키를 어떤 종류의 목록을 사용하는 문자열로 변환하는 것 같습니다. 눌려진 키가 물론 특수 문자 인 경우. 키보드 문화와 관련된 문제가 발생할 수 있습니다.
내 질문은 : 특수 문자의 키 누르기를 현재 문화권을 기반으로 한 문자열 표현으로 어떻게 변환 할 수 있습니까?
private void keypressed(Object o, KeyPressEventArgs e)
{
char key = e.KeyChar; // the character representation of the key that was pressed
}
KeyDown
이 같은 방향 및 기능 키와 같은 비 문자 키의 발생 : 당신이 KeyDown
대신 KeyPress
을 사용할 수 있습니다처럼
@ Jodrell 캐릭터의 문자열 표현에 관심이 있습니다. 'oem'키와 ctrl 및/또는 alt를 사용하여 만들 수있는 특수 문자가있는 경우이를 고려해야합니다. Shift 키를 누르면 문화권에 따라 키의 출력이 바뀔 수 있습니다. – Simon