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

VB.NET Discussion :

Copier le dernier item listbox sur son disque dur


Sujet :

VB.NET

  1. #1
    Membre habitué Avatar de CLeBeR
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 412
    Points : 188
    Points
    188
    Par défaut Copier le dernier item listbox sur son disque dur
    Bonjour,
    je suis en train de développer une application qui liste certains types de fichiers et qui donne la possibilité de les sauvegarder dans le répertoire de l'application.
    Je vous explique comment se présente l'application :

    Il y a une partie graphique où tous les fichiers trouvés sont listés dans une listbox à l'aide de thread. Une fois le listage fini, si l'on appuie sur le bouton copier, tous les fichiers se copient à l'aide de ce 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
     Try
                Dim file As FileInfo
                For Each fileitem In ListboxFichiersTrouvés.Items
                    file = New FileInfo(fileitem)
                    Dim FileSize As Long = file.Length
                    Dim Taille As Long = TextBoxTailleMinimumCopieFichier.Text * 1024
                    If TextBoxTailleMinimumCopieFichier.Text = "Taille du fichier minimum pour copier ( KO )" Then
                        Taille = "0"
                    End If
                    If file.Length > Taille Then
                        file.CopyTo(Path.Combine(Application.StartupPath, file.Name), True)
                    End If
                Next
            Catch
                Call CopyDesFichiers()
            End Try

    Le code marche très bien car le listage est fini, cependant j'aimerais pouvoir copier à chaque fois qu'un nouvel item apparait.
    J'ai donc inséré un thread qui appel ma fonction copie lorsqu'un item est ajouté :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Private Sub RemplirListe(ByVal Fichier As IO.FileInfo)
            ListboxFichiersTrouvés.Items.Add(Fichier.FullName)
            ListboxFichiersTrouvés.SelectedIndex = ListboxFichiersTrouvés.Items.Count - 1
     Dim p As New Threading.Thread(AddressOf CopieDesFichiers)
                        p.Start
            ListboxFichiersTrouvés.Refresh()
        End Sub

    Cependant, l'application n'est pas fluide car je suppose que le listage se fait plus vite que le copiage.

    Je ne trouve donc pas de moyen pour contourner le problème, ou alors ce que je pourrais faire c'est dans ma fonction CopieDesFichiers lui indiquer à la place de
    For Each fileitem In ListboxFichiersTrouvés.Items juste le dernier item par exemple avec ce bout de code mais il représente une valeur booléenne donc ça ne fonctionne pas :'(

    ListboxFichiersTrouvés.SelectedIndex = ListboxFichiersTrouvés.Items.Count - 1
    Du coup, l'item est ajouté à la listebox, il est copié, nouvel item trouvé et ajouté à la listbox, l'item et copié ...
    Le code se présenterai donc comme ceci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Private Sub RemplirListe(ByVal Fichier As IO.FileInfo)
            ListboxFichiersTrouvés.Items.Add(Fichier.FullName)
            ListboxFichiersTrouvés.SelectedIndex = ListboxFichiersTrouvés.Items.Count - 1
     Dim p As New Threading.Thread(AddressOf CopieDesFichiers) 'Copie du DERNIER fichier de la listbox.
                        p.Start
            ListboxFichiersTrouvés.Refresh()
        End Sub
    Pensez à voter pour une réponse qui vous aide ou pour une personne insolente !
    Si votre sujet est résolu, cliquez sur le bouton !

  2. #2
    Membre habitué Avatar de CLeBeR
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 412
    Points : 188
    Points
    188
    Par défaut
    Bon voilà,
    j'ai trouvé la solution :

    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
    Sub RemplirListe(ByVal Fichier As IO.FileInfo)
            If Not My.Computer.FileSystem.FileExists(IO.Path.Combine(Application.StartupPath, Fichier.Name)) Then
                ListboxFichiersTrouvés.Items.Add(Fichier.FullName)
                ListboxFichiersTrouvés.SelectedIndex = ListboxFichiersTrouvés.Items.Count - 1
                Try
                    If Not My.Computer.FileSystem.FileExists(IO.Path.Combine(Application.StartupPath, Fichier.Name)) Then
                        If Application.StartupPath <> Fichier.FullName Then
                            Fichier.CopyTo(IO.Path.Combine(Application.StartupPath, Fichier.Name), True)
                        End If
                    End If
                Catch ex As Exception
                End Try
                ListboxFichiersTrouvés.Refresh()
                col.Enqueue(Fichier)
                Label1.Text = ListboxFichiersTrouvés.Items.Count
            Else
            End If
    Merci quand même.
    Pensez à voter pour une réponse qui vous aide ou pour une personne insolente !
    Si votre sujet est résolu, cliquez sur le bouton !

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

Discussions similaires

  1. [OL-2013] Enregistrer automatiquement un mail envoyé sur son disque dur
    Par tibou22 dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 17/07/2014, 16h52
  2. Stocker une hashmap et une liste d'hashmap sur son disque dur
    Par vivelapsp dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 19/11/2011, 20h10
  3. installer Backtrack 3 sur son disque dur
    Par cdevl32 dans le forum Autres
    Réponses: 0
    Dernier message: 04/06/2010, 20h48
  4. Impossible de copier des AVI sur un disque dur externe
    Par pierrot10 dans le forum Windows XP
    Réponses: 4
    Dernier message: 04/03/2008, 19h40
  5. Réponses: 5
    Dernier message: 14/10/2006, 13h04

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