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

UptoLike

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

147
тическими членами класса Mouse, которые ничем не отличаются от
статических членов класса MouseButtonEventArgs.
5.5.9. Захват мыши
Обычно каждый раз, когда элемент получает событие «down»
кнопки мыши, через короткий промежуток времени он получает со-
ответствующее событие «up» кнопки мыши. Однако так бывает не
всегда. Например, если пользователь щелкает на элементе, удержива-
ет нажатой кнопку мыши, а затем перемещает указатель мыши за пре-
делы элемента, то элемент не получит событие отпускания кнопки мыши.
В некоторых ситуациях может понадобиться уведомление о со-
бытиях отпускания кнопки мыши, даже если они возникают после то-
го, как указатель мыши покинул пределы элемента. Чтобы получать
уведомления, нужнозахватить мышь, вызывая для этого метод
Mouse.Capture() и передавая ему соответствующий элемент. С этого
момента код будет получать события о нажатии и отпускании кнопок
мыши до тех пор, пока снова не будет вызван метод Mouse.Capture() и
не будет передана пустая (null) ссылка. Остальные элементы не полу-
чат события мыши до тех пор, пока мышь будет оставаться захвачен-
ной. Это означает, что пользователь не сможет щелкать кнопками
мыши где-либо в окне, щелкать внутри текстовых полей и т. д. Захват
мыши иногда используется для реализации функций перетаскивания
и изменения размеров элементов.
При вызове метода Mouse.Capture() можно передавать необяза-
тельное значение в качестве второго параметра. Обычно при вызове
метода Mouse.Capture() используется CaptureMode.Element, а это оз-
начает, что элемент будет всегда получать события мыши. Однако
можно применить CaptureMode.SubTree для того, чтобы события мы-
ши могли доходить до элемента, на котором был произведен щелчок
кнопкой мыши, если этот элемент является потомком элемента, вы-
полняющего захват. В этом есть смысл, если уже используется подня-