Control.DragEnter 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 objek diseret ke batas kontrol.
public:
event System::Windows::Forms::DragEventHandler ^ DragEnter;
public event System.Windows.Forms.DragEventHandler DragEnter;
public event System.Windows.Forms.DragEventHandler? DragEnter;
member this.DragEnter : System.Windows.Forms.DragEventHandler
Public Custom Event DragEnter As DragEventHandler
Jenis Acara
Contoh
Contoh kode berikut menunjukkan operasi seret dan letakkan antara dua kontrol ListBox. Contoh memanggil metode DoDragDrop saat tindakan seret dimulai. Tindakan seret dimulai jika mouse telah memindahkan lebih dari SystemInformation.DragSize dari lokasi mouse selama peristiwa MouseDown. Metode IndexFromPoint digunakan untuk menentukan indeks item yang akan diseret selama peristiwa MouseDown
.
Contoh ini juga menunjukkan penggunaan kursor kustom untuk operasi seret dan letakkan. Contoh ini mengharuskan dua file kursor, 3dwarro.cur
dan 3dwno.cur
, ada di direktori aplikasi, untuk kursor seret dan tanpa jatuhkan kustom. Kursor kustom akan digunakan jika UseCustomCursorsCheck
CheckBox dicentang. Kursor kustom diatur dalam penanganan aktivitas GiveFeedback.
Status keyboard dievaluasi di penanganan aktivitas DragOver untuk ListBox
kanan , untuk menentukan operasi seret apa yang akan didasarkan pada status tombol SHIFT, CTRL, ALT, atau CTRL+ALT. Lokasi di ListBox
tempat penurunan akan terjadi juga ditentukan selama peristiwa DragOver
. Jika data yang akan dihilangkan bukan String
, maka DragEventArgs.Effect diatur ke None
di DragDropEffects. Akhirnya, status penurunan ditampilkan di DropLocationLabel
Label.
Data yang akan dihilangkan untuk ListBox
yang tepat ditentukan dalam penanganan aktivitas DragDrop dan nilai String
ditambahkan di tempat yang sesuai di ListBox
. Jika operasi seret bergerak di luar batas formulir, maka operasi seret dan letakkan dibatalkan di penanganan aktivitas QueryContinueDrag.
Kutipan kode ini menunjukkan menggunakan peristiwa DragEnter. Lihat metode DoDragDrop untuk contoh kode lengkap.
void ListDragTarget_DragEnter( Object^ /*sender*/, System::Windows::Forms::DragEventArgs^ /*e*/ )
{
// Reset the label text.
DropLocationLabel->Text = "None";
}
private void ListDragTarget_DragEnter(object sender, DragEventArgs e)
{
// Reset the label text.
DropLocationLabel.Text = "None";
}
Private Sub ListDragTarget_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles ListDragTarget.DragEnter
' Reset the label text.
DropLocationLabel.Text = "None"
End Sub
Keterangan
Peristiwa DragEnter dinaikkan saat pengguna pertama kali menyeret kursor mouse ke kontrol selama operasi seret dan letakkan.
Nota
Dalam versi yang lebih lama dari .NET Framework 2.0, jika Anda meletakkan UserControl dengan peristiwa DragEnter dan DragDrop pada Formulir Windows dan seret dan letakkan sesuatu ke UserControl pada waktu desain, peristiwa DropDrop
dan DropEnter
dinaikkan. Namun, ketika Anda menutup dan membuka kembali solusi, peristiwa DragEnter dan DragDrop tidak dinaikkan lagi.
Berikut ini menjelaskan bagaimana dan kapan peristiwa yang terkait dengan operasi seret dan letakkan dinaikkan.
Metode DoDragDrop menentukan kontrol di bawah lokasi kursor saat ini. Kemudian memeriksa untuk melihat apakah kontrol adalah target penurunan yang valid.
Jika kontrol adalah target drop yang valid, peristiwa GiveFeedback dinaikkan dengan efek seret dan letakkan yang ditentukan. Untuk daftar efek seret dan letakkan, lihat enumerasi DragDropEffects.
Perubahan pada posisi kursor mouse, status keyboard, dan status tombol mouse dilacak.
Jika pengguna berpindah dari jendela, peristiwa DragLeave akan dinaikkan.
Jika mouse memasuki kontrol lain, DragEnter untuk kontrol tersebut akan dinaikkan.
Jika mouse bergerak tetapi tetap berada dalam kontrol yang sama, peristiwa DragOver dinaikkan.
Jika ada perubahan dalam status tombol keyboard atau mouse, peristiwa QueryContinueDrag dinaikkan dan menentukan apakah akan melanjutkan seret, untuk menghilangkan data, atau membatalkan operasi berdasarkan nilai properti Action dari QueryContinueDragEventArgsperistiwa .
Jika nilai DragAction
Continue
, peristiwa DragOver dinaikkan untuk melanjutkan operasi dan peristiwa GiveFeedback dinaikkan dengan efek baru sehingga umpan balik visual yang sesuai dapat diatur. Untuk daftar efek penurunan yang valid, lihat enumerasi DragDropEffects.Nota
Peristiwa DragOver dan GiveFeedback dipasangkan sehingga saat mouse bergerak melintasi target drop, pengguna diberi umpan balik -tanggal yang paling up-topada posisi mouse.
Jika nilai DragAction
Drop
, nilai efek penurunan dikembalikan ke sumbernya, sehingga aplikasi sumber dapat melakukan operasi yang sesuai pada data sumber; misalnya, potong data jika operasi adalah pemindahan.Jika nilai DragAction
Cancel
, peristiwa DragLeave dinaikkan.Nota
Properti X dan YDragEventArgs berada dalam koordinat layar, bukan koordinat klien. Baris kode Visual C# berikut mengonversi properti menjadi klien Point.
Point clientPoint = targetControl.PointToClient(new Point(de.X, de.Y));
Untuk informasi selengkapnya tentang menangani peristiwa, lihat Penanganan dan Penggalangan Peristiwa.