none
DRAGDROP de fichier vers l'extérieur de l'application RRS feed

  • Question

  • Bonjour,

    Je n'arrive pas à réaliser un glisser déposer de fichier de mon application vers l'explorateur  windows ou le bureau.

    Quelqu'un a t'il une solution ?

    Merci

    vendredi 19 décembre 2014 10:41

Réponses

  • bonjour,

    essaye ces lien sinon rappelle moi

    http://stackoverflow.com/questions/11686631/vb-net-drag-drop-and-get-file-path

    http://support.microsoft.com/kb/306969/en-us

    http://msdn.microsoft.com/en-us/library/ms973845.aspx

    lundi 22 décembre 2014 11:23
  • Re-bonjour Marcel,

    Si j'ai bien compris, tu voudrais qu'à partir de ton application pouvoir faire du D&D de fichiers existant vers l'explorateur Windows?

    Dans ce cas, voici comment procéder à partir de WPF

    - Sur la source, abonnes-toi à un événement MouseLeftButtonDown.
    - Dans la fonction abonnée, déclare un nouvel objet de type DataObject.
    - Déclare un objet de type StringCollection dans lequel tu mettras le chemin d'accès à copier.
    - Passe le en paramètre de la méthode DataObject.SetFileDropList.
    - et enfin, appelle DragDrop.DoDragDrop.

    ça devrait donner quelquechose comme ceci :

    private void MethodeAbonnee(object sender, MouseButtonEventArgs e)
    {
       DataObject dt = new DataObject();
       StringCollection coll = new StringCollection() { leCheminDaccesDuFichierSource };
       dt.SetFileDropList(coll);
       DragDrop.DoDragDrop((DependencyObject)sender,dt, DragDropEffects.Copy);
    }

    Bien entendu, n'oublie pas les espaces de noms manquants.

    Si tu fais cela à partir de Windows forms, il y a des équivalents pour "DataObject", "DoDragDrop" ainsi que pour "MouseLeftButtonDown" dans l'espace de noms "System.Windows.Forms". "DoDragDrop" est alors directement dans la classe "Control".


    Philippe

    lundi 22 décembre 2014 13:45

Toutes les réponses

  • Bonjour,

    Peux-tu être plus précis sur ce que tu recherches à faire exactement? Quand tu dis "un fichier de mon application", Est-ce que tu veux dire un fichier d'un dossier d'application?


    Philippe

    vendredi 19 décembre 2014 16:37
  • Bonjour, 

    il faut activer la propriété AllowDrop de la composante concernée, et se baser sur l’événement DragEventArgs pour récupérer le nom du fichier, et définir les cordonnées de l'emplacement dans le bureau. 

    Il y a un exemple ici qui pourra vous aider.

    samedi 20 décembre 2014 01:35
  • J'ai réussi à faire un dragdrop de fichier depuis l'explorateur vers l'application, mais c'est différent dans l'autre sens.
    lundi 22 décembre 2014 08:28
  • bonjour,

    essaye ces lien sinon rappelle moi

    http://stackoverflow.com/questions/11686631/vb-net-drag-drop-and-get-file-path

    http://support.microsoft.com/kb/306969/en-us

    http://msdn.microsoft.com/en-us/library/ms973845.aspx

    lundi 22 décembre 2014 11:23
  • Re-bonjour Marcel,

    Si j'ai bien compris, tu voudrais qu'à partir de ton application pouvoir faire du D&D de fichiers existant vers l'explorateur Windows?

    Dans ce cas, voici comment procéder à partir de WPF

    - Sur la source, abonnes-toi à un événement MouseLeftButtonDown.
    - Dans la fonction abonnée, déclare un nouvel objet de type DataObject.
    - Déclare un objet de type StringCollection dans lequel tu mettras le chemin d'accès à copier.
    - Passe le en paramètre de la méthode DataObject.SetFileDropList.
    - et enfin, appelle DragDrop.DoDragDrop.

    ça devrait donner quelquechose comme ceci :

    private void MethodeAbonnee(object sender, MouseButtonEventArgs e)
    {
       DataObject dt = new DataObject();
       StringCollection coll = new StringCollection() { leCheminDaccesDuFichierSource };
       dt.SetFileDropList(coll);
       DragDrop.DoDragDrop((DependencyObject)sender,dt, DragDropEffects.Copy);
    }

    Bien entendu, n'oublie pas les espaces de noms manquants.

    Si tu fais cela à partir de Windows forms, il y a des équivalents pour "DataObject", "DoDragDrop" ainsi que pour "MouseLeftButtonDown" dans l'espace de noms "System.Windows.Forms". "DoDragDrop" est alors directement dans la classe "Control".


    Philippe

    lundi 22 décembre 2014 13:45
  • Bonjour,
    Est-ce que vous avez testé les solutions proposées ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.
    Désormais, nous marquons les solutions proposées. N'hésitez pas à revenir et supprimer la réponse marquée si la solution n’est pas correcte. Merci d'avance!

    Cordialement,
    Nina


    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mercredi 31 décembre 2014 11:11
    Modérateur
  • Bonsoir,

    Merci Philippe pour votre aide et désolé pour le retard.

    Je laisse l'exemple pour une application Windows Form. Le déplacement d'un label depuis la feuille vers l'explorateur permet de copier un fichier, ou de coller sont contenu dans une application ouverte.

    Private Sub Label1_MouseDown(sender As Object, e As MouseEventArgs) Handles Label1.MouseDown
            Dim ObjData As New DataObject
            Dim Chemin As New System.Collections.Specialized.StringCollection
            Chemin.Add("D:\Téléchargements\toto.txt")
            ObjData.SetFileDropList(Chemin)
            If e.Button = Windows.Forms.MouseButtons.Left Then
                DoDragDrop(ObjData, DragDropEffects.Copy)
            End If
        End Sub

    mercredi 14 janvier 2015 18:01