Bagikan melalui


Gambaran umum perilaku mouse seret dan letakkan (Formulir Windows .NET)

Formulir Windows mencakup serangkaian metode, peristiwa, dan kelas yang menerapkan perilaku seret dan letakkan. Topik ini memberikan gambaran umum tentang dukungan seret dan letakkan di Formulir Windows.

Peristiwa seret dan letakkan

Ada dua kategori peristiwa dalam operasi seret dan letakkan: peristiwa yang terjadi pada target operasi seret dan letakkan saat ini, dan peristiwa yang terjadi pada sumber operasi seret dan letakkan. Untuk melakukan operasi seret dan letakkan, Anda harus menangani peristiwa ini. Dengan bekerja dengan informasi yang tersedia dalam argumen peristiwa peristiwa ini, Anda dapat dengan mudah memfasilitasi operasi seret dan letakkan.

Peristiwa pada target penurunan saat ini

Tabel berikut ini memperlihatkan peristiwa yang terjadi pada target operasi seret dan letakkan saat ini.

Peristiwa Mouse Deskripsi
DragEnter Kejadian ini terjadi ketika objek diseret ke batas kontrol. Handler untuk kejadian ini menerima argumen jenis DragEventArgs.
DragOver Kejadian ini terjadi ketika objek diseret saat penunjuk tetikus berada dalam batas kontrol. Handler untuk kejadian ini menerima argumen jenis DragEventArgs.
DragDrop Kejadian ini terjadi ketika operasi seret dan letakkan selesai. Handler untuk kejadian ini menerima argumen jenis DragEventArgs.
DragLeave Kejadian ini terjadi ketika objek diseret keluar dari batas kontrol. Handler untuk kejadian ini menerima argumen jenis EventArgs.

Kelas DragEventArgs menyediakan lokasi penunjuk mouse, status tombol mouse saat ini dan tombol pengubah keyboard, data yang diseret, dan DragDropEffects nilai yang menentukan operasi yang diizinkan oleh sumber peristiwa seret dan efek penurunan target untuk operasi.

Peristiwa di sumber penghilangan

Tabel berikut ini memperlihatkan peristiwa yang terjadi pada sumber operasi seret dan letakkan.

Peristiwa Mouse Deskripsi
GiveFeedback Kejadian ini terjadi selama operasi seret. Ini memberikan kesempatan untuk memberikan isdia visual kepada pengguna bahwa operasi seret dan letakkan terjadi, seperti mengubah penunjuk mouse. Handler untuk kejadian ini menerima argumen jenis GiveFeedbackEventArgs.
QueryContinueDrag Kejadian ini dinaikkan selama operasi seret dan letakkan dan memungkinkan sumber seret untuk menentukan apakah operasi seret dan letakkan harus dibatalkan. Handler untuk kejadian ini menerima argumen jenis QueryContinueDragEventArgs.

Kelas QueryContinueDragEventArgs menyediakan status tombol mouse saat ini dan tombol pengubah keyboard, nilai yang menentukan apakah tombol ESC ditekan, dan DragAction nilai yang dapat diatur untuk menentukan apakah operasi seret dan letakkan harus dilanjutkan.

Melakukan seret dan letakkan

Operasi seret dan letakkan selalu melibatkan dua komponen, sumber seret dan target drop. Untuk memulai operasi seret dan letakkan, tetapkan kontrol sebagai sumber dan tangani MouseDown peristiwa. Di penanganan aktivitas, panggil metode yang DoDragDrop menyediakan data yang terkait dengan penurunan dan DragDropEffects nilai .

Atur properti kontrol AllowDrop target diatur ke true untuk memungkinkan kontrol tersebut menerima operasi seret dan letakkan. Target menangani dua peristiwa, pertama-tama peristiwa sebagai respons terhadap seret berada di atas kontrol, seperti DragOver. Dan peristiwa kedua yang merupakan tindakan drop itu sendiri, DragDrop.

Contoh berikut menunjukkan seret dari Label kontrol ke TextBox. Saat seret selesai, merespons TextBox dengan menetapkan teks label ke dirinya sendiri.

// Initiate the drag
private void label1_MouseDown(object sender, MouseEventArgs e) =>
    DoDragDrop(((Label)sender).Text, DragDropEffects.All);

// Set the effect filter and allow the drop on this control
private void textBox1_DragOver(object sender, DragEventArgs e) =>
    e.Effect = DragDropEffects.All;

// React to the drop on this control
private void textBox1_DragDrop(object sender, DragEventArgs e) =>
    textBox1.Text = (string)e.Data.GetData(typeof(string));
' Initiate the drag
Private Sub Label1_MouseDown(sender As Object, e As MouseEventArgs)
    DoDragDrop(DirectCast(sender, Label).Text, DragDropEffects.All)
End Sub

' Set the effect filter and allow the drop on this control
Private Sub TextBox1_DragOver(sender As Object, e As DragEventArgs)
    e.Effect = DragDropEffects.All
End Sub

' React to the drop on this control
Private Sub TextBox1_DragDrop(sender As Object, e As DragEventArgs)
    TextBox1.Text = e.Data.GetData(GetType(String))
End Sub

Untuk informasi selengkapnya tentang efek seret, lihat Data dan AllowedEffect.

Lihat juga