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

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Windows presentation foundation with - MacDonald M.

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

Например, если имеется панель StackPanel, в которой содержится кнопка, и вы наводите указатель мыши на эту кнопку, событие MouseEnter возникнет первым в элементе StackPanel (как только вы войдете в пределы панели), а затем в кнопке (как только вы наведете на нее указатель). Когда указатель мыши покинет пределы StackPanel, возникнет событие MouseLeave сначала в кнопке, а затем в StackPanel.
Вы можете также реагировать на два события, которые возникают при перемещении указателя мыши: PreviewMouseMove (туннельное событие) и MouseMove (событие
Book_Pro_WPF-2.mdb 181 19.05.2008 18:09:58
182 Глава 6
поднятия). Эти события предлагают вам код объекта MouseEventArgs. Этот объект включает свойства, которые могут сообщать о состоянии кнопок мыши в момент возникновения события, и метод GetPosition(), который сообщает координаты указателя мыши относительно выбираемого вами элемента. Ниже представлен пример, который отображает местонахождение указателя мыши относительно формы в независимых от устройства единицах.
private void MouseMoved(object sender, MouseEventArgs e)
{
Point pt = e.GetPosition(this); lbllnfo.Text =
String.Format("You are at ({0},{1}) in window coordinates”, pt.X, pt.Y);
}
В данном случае координаты определяются, начиная с левого верхнего угла клиентской области (под строкой заголовка). На рис. 6.7 виден результат выполнения этого кода.
Вы увидите, что координаты мыши в этом примере не представлены целыми числами. Это объясняется тем, что данный снимок экрана был произведен в системе с разрешением 120 dpi, а не со стандартным разрешением в 96 dpi. Как было сказано в главе 1, WPF автоматически масштабирует свои единицы для компенсации, используя большее количество пикселей. Поскольку размер экранного пикселя больше не совпадает с размером в системе единиц WPF, физическое положение указателя мыши можно преобразовать в дробное число единиц WPF, что и было здесь продемонстрировано.
Совет. Класс иіЕІетегЛ содержит два полезных свойства, которые могут помочь в определении местоположения указателя мыши. С помощью свойства ізМоизеС^ег можно определить, находится ли указатель мыши над элементом или одним из его потомков, а благодаря свойству IsMouseDirectlyOver можно выяснить, располагается ли указатель мыши только над элементом, а не над его потомком. Как правило, в своем коде вы не будете считывать значения этих свойств, и не будете оперировать ними, а будете использовать их для создания триггеров стилей, которые автоматически изменяют элементы по мере перемещения указателя мыши над ними. Эта технология будет рассматриваться в главе 12.
?1 MousePosition


You are at (80.8,68.8) in window coordinates

Рис. 6.7. Наблюдение за мышью
Щелчки кнопками мыши
Щелчки кнопками мыши подобны нажатиям клавиш на клавиатуре. Разница лишь в том, что события различаются для левой и правой кнопок. В табл. 6.7 перечислены события в порядке их возникновения. Помимо перечисленных, есть еще два события, которые реагируют на вращение колесика мыши: PreviewMouseWheel и МоизеМЪее1.
Все события кнопок мыши имеют дело с объектом MouseButtonEventArgs. Класс MouseButtonEventArgs происходит от класса MouseEventArgs (а это означает, что он включает ту же информацию о координатах и состоянии кнопки) и добавляет несколько новых членов.
Book_Pro_WPF-2.mdb 182 19.05.2008 18:09:58
Свойства зависимостей и маршрутизируемые события 183
Таблица 6.7. События щелчков кнопками мыши для всех элементов (в порядке их возникновения)
Имя
Тип маршрутизации
Описание
PreviewMouseLeftButtonDown и PreviewMouseRightButtonDown MouseLeftButtonDown
Туннелирование
Возникает при нажатии кнопки мыши.
Поднятие
Возникает при нажатии кнопки мыши.
PreviewMouseLeftButtonUp и PreviewMouseRightButtonUp
MouseLeftButtonUp и MouseRightButtonUp
Туннелирование
Возникает при отпускании кнопки мыши.
Поднятие
Возникает при отпускании кнопки мыши.
Менее важными свойствами являются MouseButton (сообщает о том, какая кнопка сгенерировала событие) и ButtonState (сообщает о том, в каком состоянии находилась кнопка в момент возникновения события: была нажата или отпущена). Более интересным свойством является ClickCount, которое сообщает о том, сколько раз был произведен щелчок кнопкой, что позволит различать одиночные щелчки (когда ClickCount будет иметь значение 1) и двойные щелчки (когда ClickCount будет иметь значение 2).
Совет. Как правило, Windows-приложения реагируют, когда кнопка мыши отпускается после щелчка (событие “up”, а не “down”).
Некоторые элементы добавляют высокоуровневые события мыши. Например, класс Control добавляет события PreviewMouseDoubleClick и MouseDoubleClick, которые замещают событие MouseLeftButtonUp. Точно так же, класс Button вызывает событие Click, которое могут сгенерировать клавиатура или мышь.
На заметку! Как и события, возникающие при нажатии клавиши, события мыши предлагают информацию о том, в каком месте находился указатель мыши, и какой кнопкой был произведен щелчок в момент возникновения события. Для получения информации о текущей позиции указателя мыши и состоянии ее кнопок вы можете воспользоваться статическими членами класса Mouse, которые ничем не отличаются от статических членов класса MouseButtonEventArgs.
Предыдущая << 1 .. 83 84 85 86 87 88 < 89 > 90 91 92 93 94 95 .. 473 >> Следующая