Bagikan melalui


UIElement.PointerPressed Kejadian

Definisi

Terjadi ketika perangkat penunjuk memulai tindakan Tekan dalam elemen ini.

public:
 virtual event PointerEventHandler ^ PointerPressed;
// Register
event_token PointerPressed(PointerEventHandler const& handler) const;

// Revoke with event_token
void PointerPressed(event_token const* cookie) const;

// Revoke with event_revoker
UIElement::PointerPressed_revoker PointerPressed(auto_revoke_t, PointerEventHandler const& handler) const;
public event PointerEventHandler PointerPressed;
function onPointerPressed(eventArgs) { /* Your code */ }
uIElement.addEventListener("pointerpressed", onPointerPressed);
uIElement.removeEventListener("pointerpressed", onPointerPressed);
- or -
uIElement.onpointerpressed = onPointerPressed;
Public Custom Event PointerPressed As PointerEventHandler 
<uiElement PointerPressed="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 PointerPressed. Untuk informasi selengkapnya, lihat Menangani input penunjuk. Peristiwa pointer ditujukan untuk skenario di mana Anda tertarik dengan beberapa pointer dan hubungannya, atau ketika Anda memeriksa spesifik setiap pointer seperti posisi koordinat yang tepat. Jika tidak, Anda mungkin mempertimbangkan untuk menangani peristiwa gerakan seperti Diketuk.

Gunakan handler berdasarkan PointerEventHandler untuk menangani kejadian ini.

Input mouse dikaitkan dengan satu penunjuk yang ditetapkan ketika input mouse pertama kali terdeteksi. 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 berikut.

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);
}

Peristiwa penunjuk dari perangkat input mouse umumnya memiliki PointerId yang sama dalam detail peristiwa selama masa pakai aplikasi.

PointerPressed 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.

PointerPressed mendukung kemampuan untuk melampirkan penanganan aktivitas ke rute yang akan dipanggil bahkan jika data peristiwa untuk peristiwa ditandai Ditangani. Lihat AddHandler.

Kontrol Windows Runtime tertentu mungkin memiliki penanganan berbasis kelas untuk peristiwa input PointerPressed. Jika demikian, kontrol mungkin memiliki penimpaan untuk metode OnPointerPressed. Biasanya acara ditandai ditangani oleh handler kelas, dan peristiwa PointerPressed tidak dinaikkan untuk ditangani oleh penangan kode pengguna apa pun pada kontrol tersebut. Misalnya, ButtonBase memiliki penanganan kelas yang menangani PointerPressed dan sebaliknya mengaktifkan Klik. Untuk informasi selengkapnya tentang cara kerja penanganan berbasis kelas untuk peristiwa, lihat Gambaran umum peristiwa dan peristiwa yang dirutekan.

Kontrol mungkin juga memiliki animasi kepribadian PointerDownThemeAnimation yang berjalan secara independen dari acara.

Penunjuk mengambil

PointerPressed terkadang digunakan sebagai peristiwa yang memulai saat menangkap penunjuk, sehingga peristiwa terkait pointer lebih lanjut semuanya ditangkap oleh elemen tertentu selama penunjuk tetap tidak berfungsi. Untuk mengambil penunjuk, Anda memanggil metode CapturePointer pada elemen UI tertentu yang harus mempertahankan pengambilan. Ini biasanya dilakukan dalam penanganan aktivitas PointerPressed, dan Anda memanggil CapturePointer pada pengirim peristiwa. Untuk informasi selengkapnya tentang cara mengambil penunjuk dan mengapa Anda mungkin ingin melakukannya, lihat CapturePointer.

Peristiwa pointerPressed dan gerakan, atau peristiwa manipulasi

Tindakan pengguna yang mengaktifkan peristiwa PointerPressed pada awalnya pada akhirnya dapat mengakibatkan peristiwa Holding mewakili gerakan Hold , kecuali perangkat input adalah mouse. Jika elemen tempat PointerPressed terjadi memiliki nilai ManipulationMode non-default, maka tindakan juga dapat mengakibatkan berbagai peristiwa manipulasi seperti ManipulationStarted. Untuk informasi selengkapnya, lihat bagian "Menggunakan peristiwa manipulasi" di Menangani input penunjuk.

Ketika PointerPressed menembak, peristiwa gerakan seperti Diketuk belum akan diaktifkan karena peristiwa gerakan selain Holding menunggu pointer dilepaskan sebelum menembakkan peristiwa.

Sebagai aturan desain umum untuk interaksi pengguna aplikasi, Anda harus memeriksa apakah ada peristiwa khusus kontrol yang dapat Anda tangani untuk interaksi, atau peristiwa gerakan yang sesuai. Misalnya, jika kontrol Anda adalah Tombol, kontrol tersebut memiliki peristiwa Klik yang secara khusus ditujukan saat pengguna memanggil tindakan tombol. Atau jika elemen Anda bukan tombol tetapi Anda menangani dan peristiwa untuk tindakan utama elemen, Anda akan menangani Diketuk.

Peristiwa gerakan dapat dinonaktifkan secara khusus pada elemen individual dengan mengatur properti seperti IsTapEnabled. Anda mungkin menonaktifkan peristiwa gerakan jika Anda memproses manipulasi, tetapi Anda biasanya tidak perlu menonaktifkan peristiwa gerakan jika Anda menangani peristiwa pointer. Peristiwa penunjuk tidak dapat dinonaktifkan secara khusus, tetapi Anda dapat memilih untuk tidak menanganinya.

PointerPressed dan PointerReleased

Peristiwa lain alih-alih PointerReleased dapat diaktifkan di akhir tindakan— misalnya, PointerCanceled atau PointerCaptureLost. Jangan mengandalkan peristiwa PointerPressed dan PointerReleased selalu terjadi secara berpasangan. Agar berfungsi dengan baik, aplikasi Anda harus mendengarkan dan menangani semua peristiwa yang mungkin mewakili kesimpulan tindakan Tekan . Beberapa alasan mengapa Anda mungkin tidak mendapatkan kejadian PointerReleased adalah:

  • Perbedaan cara perangkat keras tertentu menangani tindakan sentuh dan tindakan Tekan
  • Penunjuk terprogram mengambil dari penunjuk yang berbeda
  • Tindakan pengguna yang mengubah hubungan area tampilan, seperti mengubah resolusi atau memantau pengaturan
  • Interaksi input seperti stylus menyentuh permukaan yang sama dengan tindakan sentuhan sebelumnya

Berlaku untuk

Lihat juga