Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Реклама

Windows presentation foundation with - MacDonald M.

MacDonald M. Windows presentation foundation with — Вильямс , 2008. — 928 c.
ISBN 978-5-8459-1429-3
Скачать (прямая ссылка): wpfwindowspresente2008.pdf
Предыдущая << 1 .. 82 83 84 85 86 87 < 88 > 89 90 91 92 93 94 .. 473 >> Следующая

Book_Pro_WPF-2.mdb 179 19.05.2008 18:09:57
180 Глава 6
Совет. По умолчанию свойство ТаЬ1пЬех во всех элементах управления имеет значение 1. Это означает, что вы можете назначить определенный элемент в качестве стартовой точки в окне, присвоив его свойству ТаЫпбех значение 0, и применяя автоматическую навигацию, чтобы пользователь мог переходить к остальным элементам в окне от этой стартовой точки, в соответствии с тем порядком, который вы выберете для своих элементов.
Свойство Tablndex определяется в классе Control, вместе со свойством IsTabStop. Свойству IsTabStop можно присвоить значение false, чтобы исключить элемент управления из последовательности перехода с помощью клавиши табуляции. Различие между IsTabStop и Focusable заключается в том, что элемент управления, свойство IsTabStop которого имеет значение false, может получить фокус другим путем — либо программно (если в вашем коде производится вызов метода Focus()), либо по щелчку кнопкой мыши.
Элементы управления, являющиеся невидимыми или заблокированными (изображены серым цветом) обычно не включаются в последовательность перехода с помощью клавиши табуляции и не активизируются, независимо от настройки свойств TabIndex, IsTabStop и Focusable. Чтобы скрыть или заблокировать элемент управления, используются свойства Visibility и IsEnabled, соответственно.
Получение состояния клавиши
Когда происходит нажатие клавиши, вам необходимо знать больше, чем просто то, какая именно клавиша была нажата. Кроме этого, нужно выяснить, какие еще клавиши были нажаты в это же время. Это означает, что вам придется изучить состояние остальных клавиш, особенно модификаторов вроде <Shift>, <Ctrl> и <Alt>.
События клавиш (PreviewKeyDown, KeyDown, PreviewKeyUp и KeyUp) способствуют получению этой информации. Во-первых, объект KeyEventArgs включает свойство KeyState, которое отражает свойство клавиши, сгенерировавшей событие. Еще есть свойство KeyboardDevice, которое предлагает ту же информацию для любого ключа на клавиатуре.
Неудивительно, что свойство KeyboardDevice предлагает экземпляр класса KeyboardDevice. Его свойства включают информацию о том, какой элемент в данный момент имеет фокус (FocusedElement) и какие клавиши-модификаторы были нажаты в момент возникновения события (Modifiers). К клавишам-модификаторам относятся <Shift>, <Ctrl> и <Alt>; вы можете проверить их состояние с помощью следующего кода:
if ((e.KeyboardDevice.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
lblInfo.Text = "You held the Control key.";
}
KeyboardDevice тоже предлагает несколько удобных методов, которые перечислены в табл. 6.6. Каждому из них вы передаете значение из перечисления Key.
Когда вы используете свойство KeyEventArgs.KeyboardDevice, ваш код получает состояние виртуальной клавиши. Это означает, что он получает состояние клавиатуры в момент возникновения события. Это может означать то же, что и текущее состояние клавиатуры. Например, представим, что произойдет, если пользователь вводит данные быстрее, нежели работает код. Каждый раз, когда будет возникать ваше событие KeyPress, вы будете иметь доступ к нажатию клавиши, сгенерировавшей событие, а не к символам, соответствующим нажатию. Как правило, именно такое поведение и оказывается необходимым.
Book_Pro_WPF-2.mdb 180 19.05.2008 18:09:58
Свойства зависимостей и маршрутизируемые события 181
Таблица 6.6. Методы KeyboardDevice
Имя Описание
IsKeyDown() Сообщает о том, была ли нажата данная клавиша в момент возникновения события.
IsKeyUp() Сообщает о том, была ли отпущена данная клавиша в момент возникновения события.
IsKeyToggled() Сообщает о том, находилась ли данная клавиша во “включенном” состоянии в момент возникновения события. Это относится лишь к тем клавишам, которые могут включаться и выключаться: <Caps Lock>, <Scroll Lock> и <№ц| Lock>.
GetKeyStates() Возвращает одно или несколько значений из перечисления КеуБЬабез, которое сообщает о том, является ли данная клавиша нажатой, отпущенной, включена или выключена. По сути, это то же самое, что и вызов методов 1зКеу0ошп() и !зКеуир() с передачей им той же клавиши.
Однако вы не ограничены получением информации о клавише в событиях клавиатуры. Вы можете также получать состояние клавиатуры в любой момент времени. Для этой цели необходимо воспользоваться классом Keyboard, который очень похож на класс KeyboardDevice, за исключением того, что он создан из статических членов. Ниже показан пример, в котором класс Keyboard используется для проверки текущего состояния левой клавиши <Shift>:
if (Keyboard.IsKeyDown(Key.LeftShift))
{
lblInfo.Text = "The left Shift is held down.";
}
На заметку! Класс Keyboard имеет методы, которые позволят присоединять обработчики событий клавиатуры, действующие в рамках всего приложения: AddKeyDownHandler() и AddKeyUpHandler(). Однако применять эти методы не рекомендуется. Гораздо лучше реализовать систему команд WPF, о которой будет рассказано в главе 10.
Ввод с использованием мыши
События мыши решают несколько связанных задач. Самые главные события мыши позволяют определять действия в ответ на перемещение указателя мыши над элементом. Этими событиями являются MouseEnter (возникает, когда указатель мыши перемещается над элементом) и MouseLeave (происходит, когда указатель мыши покидает пределы элемента). Оба эти события являются прямыми событиями (direct events), а это означает, что они не используют туннелирование или поднятие. Вместо этого они генерируются в одном элементе и продолжают свое существование только в нем. Такое поведение является оправданным и объясняется способами вложения элементов управления в окно WPF.
Предыдущая << 1 .. 82 83 84 85 86 87 < 88 > 89 90 91 92 93 94 .. 473 >> Следующая