Основы проектирования интерфейсов с использованием технологии Windows Presentation Foundation. Шамшев Ан. Б. - 138 стр.

UptoLike

Составители: 

138
рой 9, можно получить или значение Key.D9, или значение
Key.NumPad9. Проверка всех дозволенных значений клавиши будет
очень утомительной.
Одним из выходов является использование KeyConverter, чтобы
преобразовать значение Key в более полезную строку. Например, ис-
пользование функции KeyConverter.ConvertStringToString() в обоих
значениях Key.D9 и Key.NumPad9 вернет результат «9» в форме стро-
ки. Если просто использовать преобразование Key.ToString(), можно
получить менее полезное имя перечисления (либо «D9», либо
«NumPad9»):
KeyConverterconverter=newKeyConverter();
stringkey=converter.ConvertToString(e.Key);
Однако использовать KeyConverter тоже не очень неудобно, по-
скольку получается более объемный текст (например, «Backspace»)
для тех нажатий клавиш, которые не приводят к вводу текста.
Наиболее подходящим вариантом является обработка события
PreviewTextInput (при нем происходит большая часть проверки) и ис-
пользование события PreviewKeyDown для тех нажатий клавиш, ко-
торые не генерируют событие PreviewTextInput в текстовом поле (на-
пример, клавиша пробела). Ниже показано простое решение:
privatevoidpnl_PreviewTextInput(objectsender,TextComposi
tionEventArgse)
{
shortval;
if(!(Int16.TryParse(e.Text,outval))
{
//Запретнажатийнечисловыхклавиш,
е.Handled=true;
}
}
privatevoidpnlJPreviewKeyDown(objectsender,KeyEventArgse)
{