IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

Drag and Drop de fichiers [Débutant(e)]


Sujet :

Windows Presentation Foundation

  1. #1
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut Drag and Drop de fichiers
    Bonjour,

    Après quelques heures de recherches, je n'arrive toujours pas à trouver un tutoriel me permettant de créer une petite application WPF gérant le Drag and Drop de fichiers.

    Je souhaiterais réaliser une petite application qui me permette de faire quelque chose de très simple. Déposer un ensemble de fichiers dans mon application via un drag & drop et qu'une fenêtre s'ouvre pour chaque fichier déposé avec afficher le nom de ce dernier...

    Je ne pense pas que cela soit difficile à réaliser mais je ne sais vraiment pas comment m'y prendre.

    Quelqu'un aurait-il une piste ?
    Merci par avance.

  2. #2
    Membre éprouvé Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Points : 947
    Points
    947
    Par défaut
    Salut,

    Après quelques heures de recherches, je n'arrive toujours pas à trouver un tutoriel me permettant de créer une petite application WPF gérant le Drag and Drop de fichiers.
    Tu as pourtant plusieurs rubriques qui en parle sur MSDN : http://msdn.microsoft.com/en-us/library/ms749074.aspx

  3. #3
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par yonpo Voir le message
    Tu as pourtant plusieurs rubriques qui en parle sur MSDN : http://msdn.microsoft.com/en-us/library/ms749074.aspx
    En effet, j'ai vu le drag and drop overview mais pas les autres...
    J'ai réussi à reproduire cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    private void listBox1_DragEnter(object sender, DragEventArgs e)
            {
                if (e.Data.GetDataPresent(DataFormats.FileDrop))
                    e.Effects = DragDropEffects.Copy;
                else
                    e.Effects = DragDropEffects.None;
            }
     
            private void listBox1_Drop(object sender, DragEventArgs e)
            {
                if (e.Data.GetDataPresent(DataFormats.FileDrop))
                {
                    e.Effects = DragDropEffects.Copy;                
     
                    string[] s = (string[])e.Data.GetData(DataFormats.FileDrop, false);
                    for (int i = 0; i < s.Length; i++) 
                        listBox1.Items.Add(s[i]);
                }
                else
                    e.Effects = DragDropEffects.None;
            }
     
            private void button1_Click(object sender, RoutedEventArgs e)
            {
                foreach (ListItem item in this.listBox1.Items)
                {
                    SendDocument sendDocFrame = new SendDocument();
                    sendDocFrame.lbl_DocumentName = item.t
                    //Accès aux champs de l'autre frame pour les pré-remplir...
                    sendDocFrame.Show();
                }
            }
    En effet, après quelques lecture sur msdn, j'ai réussi à obtenir ce que je veux.
    Merci

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Un mini-exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    void Main()
    {
        Window w = new Window();
        w.AllowDrop = true;
        w.Drop += w_Drop;
        w.ShowDialog();
    }
     
    void w_Drop(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.FileDrop))
        {
            string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
            string fileNames = string.Join(Environment.NewLine, files);
            MessageBox.Show((Window)sender, fileNames);
        }
    }
    Dans l'évènement Drop, tu récupères l'objet avec GetData, et tu en fais ce que tu veux. Dans le cas d'un glisser-déposer de fichier, le type de données est string[] (au cas où il y a plusieurs fichiers)

  5. #5
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Merci Thomas pour cet exemple, c'est beaucoup plus clair qu'avec MSDN...

    Je rencontre maintenant une autre difficulté. Je souhaite créer une nouvelle fenêtre pour chaque élément de ma liste. J'arrive à le faire grâce à ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    private void button1_Click(object sender, RoutedEventArgs e)
            {
                foreach (var item in this.listBox1.Items)
                {
                    SendDocument sendDocFrame = new SendDocument();
                    sendDocFrame.lbl_DocumentName.Content = item;
                    sendDocFrame.Show();
                }
            }
    Malheureusement, ce n'est pas très propre car mes fenêtres s'ouvrent toutes les unes à la suite des autres. Je souhaiterais que celle-ci ne s'ouvrent que si l'utilisateur appui une le bouton "button1" de la second fenêtre.
    Est ce qu'il est possible de capturer cet évènement ?
    Est il possible de bloquer l'exécution de la boucle le tant que la seconde fenêtre n'est pas fermée ?
    Est que si je passer par une fenêtre modale réglerai mon problème ?

    EDIT : Il suffisait d'utiliser ShowDialog()

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD17] Drag And Drop Table Fichier
    Par GiGii dans le forum WinDev
    Réponses: 8
    Dernier message: 07/05/2012, 09h34
  2. V1.3: drag and drop de fichiers sous Firefox
    Par mga_geo dans le forum IGN API Géoportail
    Réponses: 10
    Dernier message: 16/04/2012, 18h22
  3. [WD17] Drag and Drop Outlook Fichier joint
    Par clocktime dans le forum WinDev
    Réponses: 1
    Dernier message: 18/01/2012, 08h11
  4. Drag and Drop un fichier
    Par totofe dans le forum GWT et Vaadin
    Réponses: 3
    Dernier message: 31/01/2011, 23h32
  5. Savoir ou est deposé un fichier dans un drag and drop ?
    Par mkdual dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 24/08/2005, 17h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo