ВУЗ:
Составители:
Рубрика:
136
клавишу, которая была нажата или отпущена. Ниже представлен код
обработчика события, который работает с событиями клавиш из при-
мера, показанного на рис. 45:
privatevoidKeyEvent(objectsender,KeyEventArgse)
{
if((bool)chkIgnoreRepeat.IsChecked&&e.IsRepeat)return;
stringmessage=//"At:"+e.Timestamp.ToString()+
"Event:"+e.RoutedEvent+""+
"Key:"+e.Key;
lstMessages.Items.Add(message);
}
Значение Key не учитывает состояние любой другой клавиши.
Например, нет разницы в том, была ли нажата клавиша <Shift> в тот
момент, когда нажималась<S>; в любом случае, будет получено одно
и то же значение Key, а именно Key.S.
В зависимости от того, какие параметры заданы для клавиатуры
Windows, удержание клавиши в нажатом состоянии приводит к тому,
что нажатие как действие повторяется через короткий промежуток
времени. Например, удержание нажатой клавиши <S> приведет к
вводу в текстовом поле целой серии символов S. Точно так же, удер-
жание нажатой клавиши <Shift> приводит к повтору действия нажа-
тия и к возникновению серии событий KeyDown. В реальном при-
мере, в котором нажимается комбинация<Shift+S>, текстовое поле
сгенерирует серию событий KeyDown для клавиши <Shift>, за ними –
событие KeyDown для клавиши <S>, событие TextInput, а затем собы-
тие KeyUp для клавиш <Shift> и <S>. Если нужно проигнорировать
повторы нажатия клавиши <S>, можно проверить, является ли нажа-
тие результатом удерживания клавиши в нажатом состоянии, с помо-
щью свойства KeyEventArgs. isRepeat, как показано ниже:
if((bool)chkIgnoreRepeat.IsChecked&&e.IsRepeat)return;
За событием KeyDown следует событие PreviewTextInput.
Страницы
- « первая
- ‹ предыдущая
- …
- 134
- 135
- 136
- 137
- 138
- …
- следующая ›
- последняя »