UIElement.PointerMoved Kejadian
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Terjadi ketika penunjuk bergerak sementara penunjuk tetap berada dalam area pengujian hit elemen ini.
public:
virtual event PointerEventHandler ^ PointerMoved;
// Register
event_token PointerMoved(PointerEventHandler const& handler) const;
// Revoke with event_token
void PointerMoved(event_token const* cookie) const;
// Revoke with event_revoker
UIElement::PointerMoved_revoker PointerMoved(auto_revoke_t, PointerEventHandler const& handler) const;
public event PointerEventHandler PointerMoved;
function onPointerMoved(eventArgs) { /* Your code */ }
uIElement.addEventListener("pointermoved", onPointerMoved);
uIElement.removeEventListener("pointermoved", onPointerMoved);
- or -
uIElement.onpointermoved = onPointerMoved;
Public Custom Event PointerMoved As PointerEventHandler
<uiElement PointerMoved="eventhandler"/>
Jenis Acara
Keterangan
Interaksi sentuhan, mouse, dan pena/stylus diterima, diproses, dan dikelola sebagai input pointer di aplikasi UWP. Salah satu interaksi ini dapat menghasilkan peristiwa PointerMoved. Untuk informasi selengkapnya, lihat Menangani input penunjuk dan bagian "PointerMoved untuk input mouse dan stylus" dari topik ini.
Dalam beberapa skenario UI, terutama jika pengguna menggunakan mouse, peristiwa ini akan banyak menembak. Perhatikan profil performa untuk kode yang Anda masukkan ke dalam handler ini, dan pertimbangkan cara untuk menggunakan bendera atau toleransi Anda sendiri yang dapat membatasi berapa kali logika benar-benar perlu dijalankan.
Kejadian ini adalah peristiwa yang dirutekan. Untuk informasi selengkapnya tentang konsep peristiwa yang dirutekan, lihat Gambaran umum peristiwa dan peristiwa yang dirutekan.
Untuk tindakan sentuhan dan juga untuk peristiwa khusus interaksi atau manipulasi yang merupakan konsekuensi dari tindakan sentuhan, elemen harus tes temuan yang terlihat agar menjadi sumber peristiwa dan menembakkan peristiwa yang terkait dengan tindakan. UIElement.Visibility harus Terlihat. Properti lain dari jenis turunan juga memengaruhi visibilitas hit-test. Untuk informasi selengkapnya, lihat Ringkasan peristiwa dan peristiwa yang dirutekan.
Kejadian ini juga mendukung kemampuan untuk melampirkan penanganan aktivitas ke rute yang akan dipanggil meskipun data peristiwa untuk peristiwa ditandai Ditangani. Lihat AddHandler.
PointerMoved untuk input mouse dan stylus
Perangkat input mouse memiliki kursor pada layar yang terlihat setiap kali mouse bergerak melewati batas elemen, bahkan jika tidak ada tombol mouse yang ditekan pada saat itu. Perilaku serupa tersedia untuk input perangkat pena, di mana perangkat input dapat mendeteksi bahwa pena mengarah tepat di atas permukaan perangkat input tetapi tidak menyentuhnya. Input mouse dan pena dengan demikian akan menembakkan peristiwa PointerMoved lebih sering daripada input sentuhan. Untuk informasi selengkapnya, lihat Interaksi mouse.
Sebaliknya, titik sentuh hanya dapat dideteksi jika jari menyentuh permukaan. Titik sentuh akan menghasilkan PointerMoved hanya sementara titik sentuh itu tetap dalam kontak konstan dengan permukaan saat bergerak. Untuk tindakan sentuhan semacam ini yang menghasilkan PointerMoved, kemungkinan juga tindakan akan diproses sebagai manipulasi, atau sebagai gerakan. Untuk informasi selengkapnya, lihat Menangani input penunjuk.
Input mouse dikaitkan dengan satu penunjuk yang ditetapkan ketika input mouse pertama kali terdeteksi, dan semua interaksi yang dimulai mouse memiliki PointerId yang sama. Mengklik tombol mouse (kiri, roda, atau kanan) membuat hubungan sekunder antara penunjuk dan tombol itu melalui peristiwa PointerPressed . Peristiwa PointerReleased diaktifkan hanya ketika tombol mouse yang sama dilepaskan (tidak ada tombol lain yang dapat dikaitkan dengan penunjuk hingga peristiwa ini selesai). Karena asosiasi eksklusif ini, klik tombol mouse lainnya dirutekan melalui peristiwa PointerMoved. Anda dapat menguji status tombol mouse saat menangani peristiwa ini, seperti yang ditunjukkan dalam contoh ini:
private void Target_PointerMoved(object sender, PointerRoutedEventArgs e)
{
Windows.UI.Xaml.Input.Pointer ptr = e.Pointer;
// Multiple, simultaneous mouse button inputs are processed here.
// Mouse input is associated with a single pointer assigned when
// mouse input is first detected.
// Clicking additional mouse buttons (left, wheel, or right) during
// the interaction creates secondary associations between those buttons
// and the pointer through the pointer pressed event.
// The pointer released event is fired only when the last mouse button
// associated with the interaction (not necessarily the initial button)
// is released.
// Because of this exclusive association, other mouse button clicks are
// routed through the pointer move event.
if (ptr.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Mouse)
{
// To get mouse state, we need extended pointer details.
// We get the pointer info through the getCurrentPoint method
// of the event argument.
Windows.UI.Input.PointerPoint ptrPt = e.GetCurrentPoint(Target);
if (ptrPt.Properties.IsLeftButtonPressed)
{
eventLog.Text += "\nLeft button: " + ptrPt.PointerId;
}
if (ptrPt.Properties.IsMiddleButtonPressed)
{
eventLog.Text += "\nWheel button: " + ptrPt.PointerId;
}
if (ptrPt.Properties.IsRightButtonPressed)
{
eventLog.Text += "\nRight button: " + ptrPt.PointerId;
}
}
// Prevent most handlers along the event route from handling the same event again.
e.Handled = true;
// Display pointer details.
updateInfoPop(e);
}
private void Target_PointerMoved(object sender, PointerRoutedEventArgs e)
{
Windows.UI.Xaml.Input.Pointer ptr = e.Pointer;
// Multiple, simultaneous mouse button inputs are processed here.
// Mouse input is associated with a single pointer assigned when
// mouse input is first detected.
// Clicking additional mouse buttons (left, wheel, or right) during
// the interaction creates secondary associations between those buttons
// and the pointer through the pointer pressed event.
// The pointer released event is fired only when the last mouse button
// associated with the interaction (not necessarily the initial button)
// is released.
// Because of this exclusive association, other mouse button clicks are
// routed through the pointer move event.
if (ptr.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Mouse)
{
// To get mouse state, we need extended pointer details.
// We get the pointer info through the getCurrentPoint method
// of the event argument.
Windows.UI.Input.PointerPoint ptrPt = e.GetCurrentPoint(Target);
if (ptrPt.Properties.IsLeftButtonPressed)
{
eventLog.Text += "\nLeft button: " + ptrPt.PointerId;
}
if (ptrPt.Properties.IsMiddleButtonPressed)
{
eventLog.Text += "\nWheel button: " + ptrPt.PointerId;
}
if (ptrPt.Properties.IsRightButtonPressed)
{
eventLog.Text += "\nRight button: " + ptrPt.PointerId;
}
}
// Prevent most handlers along the event route from handling the same event again.
e.Handled = true;
// Display pointer details.
updateInfoPop(e);
}
Beberapa aplikasi, seperti game, perlu melacak gerakan mouse relatif untuk fungsionalitas tertentu (misalnya, trackball virtual atau kamera pandang) dan tidak menggunakan kursor sistem atau koordinat layar absolut. Untuk detail tentang menyembunyikan kursor mouse dan mengabaikan data mouse absolut, lihat Gerakan mouse relatif dan CoreWindow.