현황입니다
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
int num = e.KeyValue.GetKeyValue();
}
처럼 전화 : 키보드 키가 있습니다. 일부 키는 숫자를 나타내며 일부 키는 숫자를 나타냅니다.
문제 (수정) : 키가 숫자 인 경우 키로 표시되는 숫자 값을 나타냅니다.
문제를 해결하려면 각 키 (모든 키의 집합 중)가 숫자를 나타내는 것은 물론 각 (숫자) 키가 나타내는 정확한 숫자 값을 알아야합니다.
내 지식으로는 프레임 워크에서 이러한 매핑을 쉽게 얻을 수있는 방법이 없습니다.
참고 : 키 열거에서 D0-D9 및 NumPad0-NamPad9가 연속적이라는 사실은 실수로 발생하며 순차적으로 정렬 된 이러한 값에 의존한다는 근거는 없습니다.
그래서 해결책은 다음과 같습니다 지정된 키가 숫자를 나타내는 경우
- 가 결정합니다.
- 키가 숫자 인 경우 키의 숫자 값을 반환합니다.
솔루션 밀접 모델
private static readonly IDictionary<Keys, int> NumericKeys =
new Dictionary<Keys, int> {
{ Keys.D0, 0 },
{ Keys.D1, 1 },
{ Keys.D2, 2 },
{ Keys.D3, 3 },
{ Keys.D4, 4 },
{ Keys.D5, 5 },
{ Keys.D6, 6 },
{ Keys.D7, 7 },
{ Keys.D8, 8 },
{ Keys.D9, 9 },
{ Keys.NumPad0, 0 },
{ Keys.NumPad1, 1 },
{ Keys.NumPad2, 2 },
{ Keys.NumPad3, 3 },
{ Keys.NumPad4, 4 },
{ Keys.NumPad5, 5 },
{ Keys.NumPad6, 6 },
{ Keys.NumPad7, 7 },
{ Keys.NumPad8, 8 },
{ Keys.NumPad9, 9 }
};
private int? GetKeyNumericValue(KeyEventArgs e) {
if (NumericKeys.ContainsKey(e.KeyCode)) return NumericKeys[e.KeyCode];
else return null;
}
틀림없이이 아닌 간단한 솔루션,하지만 하나.
숫자 대신에 열거 형을 사용하여 읽기 쉽도록하는 이유는 무엇입니까? "> = (int) Keys.D0"및 "> = (int) Keys.Numpad0"등 ... –
이 코드에는 많은 마법의 숫자가 있습니다. Keys.X 열거 형을 사용하면 훨씬 더 명확 해집니다. –
나는 그 것을 생각하고 있었지만 이것이 내가 필요한 것입니다. 감사! –