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 Forms Discussion :

[C#] RichTextBox et glisser/déposer de fichier


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 349
    Par défaut [C#] RichTextBox et glisser/déposer de fichier
    Salut,

    J'ai une application avec une RichTextBox. Dedans je veux faire un glisser/déposer d'un fichier et en récupérer le path.

    Je sais faire un glisser/déposer de texte à partir de wordpad par exemple. Là où je bloque c'est pour récupérer le path de mon fichier lors du glisser/déposer.

    Quelqu'un peut-il m'aider ?

    Merci.

    ++

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 349
    Par défaut
    J'ai trouvé un exemple en VB sur MSDN, je l'ai adapté à mon application mais je n'y arrive pas...

    Voici le lien : http://msdn.microsoft.com/library/de...mpDragDrop.asp

    Et voici mon code :
    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
    private void richTextBox_firmware_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
    {
       if (e.Data.GetDataPresent(DataFormats.FileDrop))
       {
          e.Effect = DragDropEffects.All;
       }
    }
     
    private void richTextBox_firmware_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
    {
       if (e.Data.GetDataPresent(DataFormats.FileDrop))
       {
          string hex_source_file = "" + e.Data.GetData(DataFormats.FileDrop);
          richTextBox_messages.AppendText(hex_source_file);
       }
    }

  3. #3
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Plus de précision STP, tu n'arrives pas à quoi ?
    Qu'est ce qui ne marche pas exactement ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 349
    Par défaut
    Tout simplement récupérer le path du fichier que je dépose dans ma richTextBox par glisser/déposer...

    ++

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 349
    Par défaut
    Personne ne peut m'aider ?

    Je suis sûr que ce n'est pas grand chose mais là je ne trouve vraiment pas

    ++

  6. #6
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Je veux bien t'aider, mais va falloir me parler comme un développeur et pas comme à un grand-gourou-qui-va-magiquement-comprendre-mon-problême-et-me-donner-la-réponse-à-la-question-que-je-n-ai-pas-posée.

    Je réitère :
    Plus de précision STP, tu n'arrives pas à quoi ?
    Qu'est ce qui ne marche pas exactement DANS TON CODE ?

    Quel résultat as-tu avec ce que tu as publié ?
    Quel résultat attendais-tu ?
    Quelle est la question précise que tu veux poser qui te débloquerait ?

    "Ca marche pas", c'est mes clients que me disent ça, et ils me payent pour que je me démerde avec ça. Et je passe plus de temps à essayer de comprendre leur problème qu'à le résoudre.
    Ici c'est un forum d'aide aux développeur, et pas consulting-gratos.fr

    (Dsl, je suis pas très agréable le vendredi. Fin de semaine. Fatigué)

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 349
    Par défaut
    J'ai réussi, mais pas tout à fait comme tu m'as dit Mose...

    Voici mon code :
    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
     
    /***************************************************************
    * DRAG & DROP D'UN FICHIER
    ***************************************************************/
    private void Form1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
    {
       if (e.Data.GetDataPresent(DataFormats.FileDrop))
       {
          e.Effect = DragDropEffects.Copy;
       }
    }
     
    private void Form1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
    {
       if (e.Data.GetDataPresent("FileName"))
       {
          Array DroppedFile = (Array)e.Data.GetData(DataFormats.FileDrop);
          String FileName = DroppedFile.GetValue(0).ToString();
       }
    }
    C'était dans ce sens que tu m'orientais ?

    ++

    Edit : je ne fais plus le drag & drop dans ma richTextBox mais dans ma form

  8. #8
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Yep, c'est bien.

    Deux remarques :

    - Je comprend pas pourquoi tu fais if (e.Data.GetDataPresent(DataFormats.FileDrop)) dans le DragEnter et if (e.Data.GetDataPresent("FileName")) dans le DoDragDrop. Par soucis de cohérence (d'homogénéité), tu devrais n'utiliser qu'une seule des deux formes.

    - Tu récupère un Array et tu fais du GetValue alors que plus simplement tu pourrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // on récupère un tableau de noms de fichier
    string[] droppefiles = (string[])e.Data.GetData(DataFormats.FileDrop);
    // on ne s'intéresse qu'au premier nom de fichier
    string firstfilename = droppefiles[0];
    Je trouve ça plus lisible, mais bon... c'est une question de point de vue

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 349
    Par défaut
    Citation Envoyé par Mose
    - Je comprend pas pourquoi tu fais if (e.Data.GetDataPresent(DataFormats.FileDrop)) dans le DragEnter et if (e.Data.GetDataPresent("FileName")) dans le DoDragDrop. Par soucis de cohérence (d'homogénéité), tu devrais n'utiliser qu'une seule des deux formes.
    A oui, c'est vrai que je n'ai pas besoin de faire les deux

    Citation Envoyé par Mose
    - Tu récupère un Array et tu fais du GetValue alors que plus simplement tu pourrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // on récupère un tableau de noms de fichier
    string[] droppefiles = (string[])e.Data.GetData(DataFormats.FileDrop);
    // on ne s'intéresse qu'au premier nom de fichier
    string firstfilename = droppefiles[0];
    Je trouve ça plus lisible, mais bon... c'est une question de point de vue
    Tout compte fait tu as raison, surtout que j'ai besoin de récupérer mon nom de fichier dans une chaîne...

    Maintenant je saurai faire des drag & drop de fichiers

    Merci Mose.

    ++

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

Discussions similaires

  1. [OL-2010] Userform - glisser-déposer de fichier dans une listbox
    Par vlv35 dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 28/10/2014, 10h51
  2. Permettre le glisser-déposer de fichier dans un site internet
    Par Invité dans le forum Webdesign & Ergonomie
    Réponses: 2
    Dernier message: 20/01/2011, 00h57
  3. [Batch] Modification d'un fichier txt par glisser/déposer
    Par L.rod dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 18/09/2009, 14h41
  4. Réponses: 0
    Dernier message: 03/11/2008, 13h44
  5. Glisser/déposer un fichier sur une appli VB
    Par kafifi dans le forum Windows Forms
    Réponses: 4
    Dernier message: 29/11/2006, 00h06

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