Saya perlu memasukkan file gambar ke dalam aplikasi WPF saya. Saat ini saya memiliki peristiwa yang diaktifkan ketika saya memasukkan file, tetapi saya tidak tahu apa yang harus dilakukan selanjutnya. Bagaimana cara mendapatkan Gambar? Apakah sender
objek itu gambar atau kontrolnya?
private void ImagePanel_Drop(object sender, DragEventArgs e)
{
//what next, dont know how to get the image object, can I get the file path here?
}
AllowDrop
disetel ke True tetapiDrop
penangan kejadian tidak pernah dipanggil. Ketika saya menyeret file ke atas jendela, saya melihat simbol melingkar "ditolak"Grid
elemen root, dengan bagianBorder
dalam denganBackground
properti diatur ke sesuatu (putih baik-baik saja, tetapi tidak transparan). Di dalamBorder
saya meletakkan konten yang sebenarnya.File gambar terdapat dalam
e
parameter, yang merupakan turunan dariDragEventArgs
kelas .(
sender
Parameter berisi referensi ke objek yang memunculkan peristiwa tersebut.)Secara khusus, periksa
e.Data
anggota ; seperti yang dijelaskan dalam dokumentasi, ini mengembalikan referensi ke objek data (IDataObject
) yang berisi data dari peristiwa tarik.The
IDataObject
interface memberikan sejumlah metode untuk mengambil data objek yang Anda setelah. Anda mungkin ingin memulai dengan memanggilGetFormats
metode untuk mengetahui format data yang Anda kerjakan. (Misalnya, apakah itu gambar aktual atau sekadar jalur ke file gambar?)Kemudian, setelah Anda mengidentifikasi format file yang sedang diseret, Anda akan memanggil salah satu kelebihan tertentu dari
GetData
metode tersebut untuk benar-benar mengambil objek data dalam format tertentu.sumber
Selain itu untuk menjawab AR perlu diketahui bahwa jika Anda ingin menggunakan
TextBox
drop Anda harus mengetahui hal-hal berikut.TextBox
tampaknya sudah memiliki beberapa penanganan default untukDragAndDrop
. Jika objek data Anda adalah aString
, itu akan berfungsi. Jenis lain tidak ditangani dan Anda mendapatkan efek mouse Terlarang dan penangan Drop Anda tidak pernah dipanggil.Sepertinya Anda dapat mengaktifkan penanganan Anda sendiri dengan
e.Handled
to true diPreviewDragOver
pengendali kejadian.XAML
C #
sumber