J'ai besoin de déposer un fichier image dans mon application WPF. Un événement se déclenche actuellement lorsque je dépose les fichiers, mais je ne sais pas quoi faire ensuite. Comment obtenir l'image? L' sender
objet est-il l'image ou le contrôle?
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
est défini sur True mais leDrop
gestionnaire d'événements n'est jamais appelé. Lorsque je fais glisser un fichier sur la fenêtre, je vois un symbole circulaire «refusé»Grid
élément racine, avec unBorder
intérieur avec laBackground
propriété définie sur quelque chose (le blanc est bien, mais pas transparent). Dans leBorder
je mets le contenu réel.Le fichier image est contenu dans le
e
paramètre, qui est une instance de laDragEventArgs
classe .(Le
sender
paramètre contient une référence à l'objet qui a déclenché l'événement.)Plus précisément, vérifiez le
e.Data
membre ; comme l'explique la documentation, cela renvoie une référence à l'objet de données (IDataObject
) qui contient les données de l'événement glisser.L'
IDataObject
interface fournit un certain nombre de méthodes pour récupérer l'objet de données que vous recherchez. Vous voudrez probablement commencer par appeler laGetFormats
méthode afin de connaître le format des données avec lesquelles vous travaillez. (Par exemple, est-ce une image réelle ou simplement le chemin vers un fichier image?)Ensuite, une fois que vous avez identifié le format du fichier glissé, vous appellerez l'une des surcharges spécifiques de la
GetData
méthode pour récupérer réellement l'objet de données dans un format particulier.la source
De plus, pour répondre à AR, veuillez noter que si vous souhaitez utiliser
TextBox
pour abandonner, vous devez savoir ce qui suit.TextBox
semble avoir déjà une gestion par défaut pourDragAndDrop
. Si votre objet de données est unString
, cela fonctionne simplement. Les autres types ne sont pas gérés et vous obtenez l' effet de souris Interdit et votre gestionnaire Drop n'est jamais appelé.Il semble que vous puissiez activer votre propre gestion avec
e.Handled
sur true dans unPreviewDragOver
gestionnaire d'événements.XAML
C #
la source