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 :

Lister fichiers de plusieurs repertoires [Débutant]


Sujet :

Windows Forms

  1. #41
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    D'ailleurs tiens je me demande comment je peux copier le fichier auquel correspond le fileinfo affiché dans ma textbox..
    Une idée ?

  2. #42
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    @adn56, c'est comme ça que tu fait pour la progressbar sur des fichiers ?

    Je vais expliquer pourquoi je ne trouve pas la progressbar réelle viable dans ce cas.

    Etape 1
    Pour récupérer le nombre de fichier, le code met 1840 ms chez moi, c'est comme ça que tu créer ton compteur ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string[] lst = Directory.GetFiles(@"E:\", "*.*", SearchOption.AllDirectories);
    int CountFile = lst.Length;
    Etape 4
    Après tu fait progresser la bar à chaque itération dans la boucle for.
    Ce code met 48 ms chez moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (int i = 0; i < lst.Count(); i++)
    lst[i] = new FileInfo(lst[i]).Name;
    Conclusion,
    On gel l'application pendant 97,5% du traitement pour afficher une barre progressif pour les 2,5% restant.
    Dans mon cas je ne suis pas sur qu'une progresse bar de 48 ms fasse patienter l'utilisateur, je ne sais même pas si il la verra, par contre 2s d'attente il va le ressentir.

  3. #43
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Citation Envoyé par naruthomas41 Voir le message
    D'ailleurs tiens je me demande comment je peux copier le fichier auquel correspond le fileinfo affiché dans ma textbox..
    Une idée ?
    Je ne comprend pas, l'utilisateur tape manuellement un nom de fichier c'est cela ? Ça sera le fichier à copier ?

  4. #44
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Octobre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2008
    Messages : 83
    Points : 96
    Points
    96
    Par défaut
    non Eric tu ne fais pas QUE récupérer le nombre de fichier avec ta méthode (tu fais tout le boulot )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DirectoryInfo.GetFiles().Length
    pour avoir QUE le nombre de fichier à lister
    Aprés je fais une fonction récursive et c'est dans cette fonction que j'incrémente de 1 ma progressbar à chaque fichier trouvé

    https://msdn.microsoft.com/fr-fr/library/6yk7a1b0.aspx

  5. #45
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    @eric: Oui l'utilisateur rentre manuellement le nom du fichier qu'il souhaite et choisit celui qui l’intéresse dans la liste des suggestion de la textbox, ensuite avec l'appui sur un bouton je voudrais que ça copie / colle le fichier correspondant à la textbox vers le chemin rentré dans la textbox2.

    @Adn: Desolé d'avance pour ma question mais, c'est quoi une fonction récursive et comment ça fonctionne ? ^^'

  6. #46
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    @adn56

    Ton code ne donne pas le nombre de fichiers dans les sous répertoires, oui ça doit allé assez vite du coup.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DirectoryInfo.GetFiles().Length

    Ces 2 lignes mettent le même temps d'exécution ca me parait normal, j'ai louper quelques choses adn56 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int c = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories).Length;
    int d = new DirectoryInfo(path).GetFiles("*.*", SearchOption.AllDirectories).Length;
    PS : Dans la ligne de code DirectoryInfo.GetFiles().Length la méthode GetFiles (la plus consommatrice en temps) est exécuté de la même façon que dans DirectoryInfo.GetFiles()

    Voir test : http://www.codeproject.com/Articles/...ory-Enumerator

  7. #47
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Salut les gars !

    Petite question par rapport a la ligne System.IO.File.Copy..
    Comment je peut utiliser l'option " searchoption.Alldirectories " ? j'ai bien cherché mais je n'y parvient po..

    C'est pour pouvoir copier mes fichiers qui se trouvent dans mes sous-dossiers !

  8. #48
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Nous avions parlé de localiser le fichier avant de le copier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string FindPath = Directory.GetFiles(@"C:\MSOCache", "Office64WW.msi", SearchOption.AllDirectories).FirstOrDefault();

  9. #49
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Ha oui d'accord ! alors du coup ton code la ( arrêtes moi si je me trompe ) localise le fichier "Office64WW.msi" dans "C:\MSOCache", c'est ca ?

  10. #50
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Oui

  11. #51
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Bon bin nickel ca fonctionne parfaitement !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     string FindPath = Directory.GetFiles(@"\\chemin_reseau\", textBox1_id.Text, SearchOption.AllDirectories).FirstOrDefault();
                File.Copy(@"\" + FindPath, @"C:\test\" + textBox1_id.Text);
    Un gros merci a toi eric, un fois de plus tu me sauve la mise ! ^^

    Bon par contre nouveau probleme...

    Quand j'utilise ton code pour afficher le panel dans la propriété " Show " de ma form2, ca s'affiche bien mais pas comme je veux..

    Ca fait:

    1) Je click sur mon bouton pour lancer ma form2
    2) J'attend a peu près 20 secondes le temps que ma form scan le répertoire réseau ainsi que tout les sous-répertoires.
    3) Ma form s'affiche avec le panel " Veuillez patienter " et apres je peux en disposer..

    Moi je voudrais que le panel s'affiche et me fasse patienter le temps que ma textbox scan le repertoire reseau, pas apres...

    Une idée ? un thread peut etre ?

  12. #52
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Je pensait que tu utiliserai la méthode du panel dans ta Form1 à l'ouverture de l'application ?
    Par contre je n'ai pas bien comprit ce qui ne s’affiche pas comme tu veux.

  13. #53
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Non non, la " copie assistée " n'est qu'un module de mon projet finale !

    En fait depuis ma form1 avec l'appui sur un bouton je lance ma form2 ( le module copie assistée ) et c'est ce dernier qui ne se lance qu'une fois qu'il a finit de scanner le " chemin_reseau ".
    L'idée c'est, vu que ma form2 met du temps a se lancer, d'afficher une form " intermédiaire " pour faire patienter l'utilisateur pendant le scan.

    C'est clair la ? je me rends pas bien compte..

  14. #54
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Octobre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2008
    Messages : 83
    Points : 96
    Points
    96
    Par défaut
    salut eric, j'ai du mal m'exprimer, pour la progressbar j'ai dit de faire une fonction récurcive (qui s'appelle elle même)
    voila ce que j'avais fait y'a 5 ans en vb pour ce faire, il ne reste plus qu'a incrémenter la progress à chaque itération (et c'est surrement moins optimiser que le getfile du framework)

    bonne lecture je pars en week-end
    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
        Public Function NombreFichiers(ByVal dirInfo As System.IO.DirectoryInfo) As Integer
            ' vérification de la cohérence du chemin
            If Not dirInfo.Exists Then Return -1 : Exit Function
            Dim total As Integer = 0
            For Each Fichier As System.IO.FileInfo In dirInfo.GetFiles()
                total += 1
            Next
            For Each Dossier As System.IO.DirectoryInfo In dirInfo.GetDirectories()
                total += NombreFichiers(Dossier) 'récursif attention !
            Next
            Return total
        End Function ' à faire pour progress bar
     
        Public Function TailleRepertoire(ByVal dirInfo As System.IO.DirectoryInfo) As Long
            ' vérification de la cohérence du chemin
            If Not dirInfo.Exists Then Return 0 : Exit Function
            Dim total As Long = 0
            For Each Fichier As System.IO.FileInfo In dirInfo.GetFiles()
                total += Fichier.Length
            Next
            For Each Dossier As System.IO.DirectoryInfo In dirInfo.GetDirectories()
                total += TailleRepertoire(Dossier) 'récursif attention !
            Next
            Return total
        End Function ' à faire pour progress bar
    ce bout de code tourne toujours dans une de mes applications de sauvegarde auto sur mes nass, faudrait que je revois ça LOL

  15. #55
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Je te propose une class que j'ai faite qui permet de faire patienter l'utilisateur.
    Elle te servira surement plusieurs fois.

    Elle s'utilise comme ça (par exemple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SplashScreen.Splash SS = new SplashScreen.Splash();
    private void Form1_Shown(object sender, EventArgs e)
    {
        this.Enabled = false;
        SS.Show();
     
        string[] aa = Directory.GetFiles(@"F:\", "*.*", SearchOption.AllDirectories);
     
        SS.Close();
        this.Enabled = true;
    }
    La class (je n'arrive pas à la mettre en pièce jointe d'ici), à sauvegarder dans un fichier 'SplashScreen.cs' par exemple et à ajouter au projet :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    using System.Windows.Forms;
    using System.Threading;
     
    namespace SplashScreen
    {
        public partial class Splash
        {
            private volatile bool NeedClose = false;
     
            Thread T;
            public void Show()
            {
                NeedClose = false;
                T = new Thread(new ParameterizedThreadStart(loop));
                T.IsBackground = true;
                T.Start(this);
            }
     
            public void Close()
            {
                NeedClose = true;
                T.Join();
                T = null;
            }
     
            private static void loop(object obj)
            {
                Splash @this = (Splash)obj;
                SplashScreenForm Splashform = new SplashScreenForm();
     
                Splashform.Show();
                while (!@this.NeedClose)
                {
                    Splashform.Refresh();
                    Thread.Sleep(50);
                }
     
                Splashform.Dispose();
                Splashform = null;
            }
     
            private partial class SplashScreenForm : Form
            {
                public SplashScreenForm()
                {
                    InitializeComponent();
                }
     
                private System.Windows.Forms.Label label1;
                private System.Windows.Forms.ProgressBar progressBar1;
     
                private void InitializeComponent()
                {
                    this.label1 = new System.Windows.Forms.Label();
                    this.progressBar1 = new System.Windows.Forms.ProgressBar();
                    this.SuspendLayout();
                    // 
                    // label1
                    // 
                    this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                    | System.Windows.Forms.AnchorStyles.Left)
                    | System.Windows.Forms.AnchorStyles.Right)));
                    this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                    this.label1.ForeColor = System.Drawing.SystemColors.MenuHighlight;
                    this.label1.Location = new System.Drawing.Point(12, 9);
                    this.label1.Name = "label1";
                    this.label1.Size = new System.Drawing.Size(216, 38);
                    this.label1.TabIndex = 0;
                    this.label1.Text = "Veuillez patienter ...";
                    this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
                    this.label1.UseWaitCursor = true;
                    // 
                    // progressBar1
                    // 
                    this.progressBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
                    | System.Windows.Forms.AnchorStyles.Right)));
                    this.progressBar1.Location = new System.Drawing.Point(12, 50);
                    this.progressBar1.Name = "progressBar1";
                    this.progressBar1.Size = new System.Drawing.Size(216, 23);
                    this.progressBar1.Style = System.Windows.Forms.ProgressBarStyle.Marquee;
                    this.progressBar1.TabIndex = 2;
                    this.progressBar1.UseWaitCursor = true;
                    // 
                    // SplashScreenForm
                    // 
                    this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
                    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                    this.ClientSize = new System.Drawing.Size(240, 85);
                    //this.ControlBox = false;
                    this.Controls.Add(this.progressBar1);
                    this.Controls.Add(this.label1);
                    //this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
                    this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
                    this.MaximizeBox = false;
                    this.MinimizeBox = false;
                    this.Name = "SplashScreenForm1";
                    this.ShowIcon = false;
                    this.ShowInTaskbar = false;
                    this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
                    //this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
                    //this.Text = "";
                    this.UseWaitCursor = true;
                    this.ResumeLayout(false);
     
                }
     
                // Désactive le bouton X et la possibilité de Alt + F4
                private const int CP_NOCLOSE_BUTTON = 0x200;
                protected override CreateParams CreateParams
                {
                    get
                    {
                        CreateParams myCp = base.CreateParams;
                        myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON;
                        return myCp;
                    }
                }
     
                // Désactive la posibilité de déplacer la form
                protected override void WndProc(ref Message message)
                {
                    const int WM_SYSCOMMAND = 0x0112;
                    const int SC_MOVE = 0xF010;
     
                    switch (message.Msg)
                    {
                        case WM_SYSCOMMAND:
                            int command = message.WParam.ToInt32() & 0xfff0;
                            if (command == SC_MOVE)
                                return;
                            break;
                    }
     
                    base.WndProc(ref message);
                }
            }
        }
    }

  16. #56
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    @adn56 :
    Peut être.

    Si le calcul de la ProgressBar est trop significatif par rapport au traitement elle n'a aucun intérêt.
    Prendre 10s pour calculer/estimer une ProgressBar qui mettra 10s de traitement, n'est selon moi, pas rentable (dans notre cas nous effectuerions deux fois le même travail ).

    Voici ma vision de notre cas pratique et problème :
    Nous souhaitons afficher une ProgressBar pour voir l'avancement réel du listage des fichiers.
    - Pour estimer la ProgressBar, on as besoin de connaitre le nombre de fichier total.
    - Pour connaitre le nombre de fichier total nous avons besoin de connaitre la liste des fichiers.

    Si nous pouvions connaitre le nombre de fichier en 1ms et que le listage prenait 10s, je serait d'accord.

    J'ai bien comprit ton exemple VB récursif.
    Prenons l'exemple de la fonction 'NombreFichiers' qui calcul le nombre de fichier dans un répertoire ainsi que ses sous répertoires (en se rappelant elle même sur les sous-dossiers).
    La fin de la ProgressBar doit être égal au nombre total de fichier, donc une fois que tu as ce chiffre tu as déjà fini ton traitement.

    Si tu pense avoir une idée/solution viable par rapport au problème posé, merci de nous la présenter de façon moins théorique.

  17. #57
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Eric ta classe est juste parfaite ! le résultat est top, pile poil ce que je cherchais a faire ! =) gros merci !


    Apres pour le problème de la progressebar dont vous discutez avec adn56, plutôt qu'une progressbar, pourquoi ne pas mettre un label qui énumère les fichiers traités au fur et a mesure que le scan avance ? un peu a la Photoshop vous voyez ?

    Je me demande si du coup le problème reste le même ou pas..

  18. #58
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Une progressBar marque (sans fin) ou les fichiers qui défile c'est pareil

    Non du coup le problème ne serai pas le même.

  19. #59
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Salut les mecs !

    Bon alors voici mon code qui fonctionne impec tout bien comme je le veux et ce, grace a vous !

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
     
    namespace SCI_ASSIST
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
     
            private void button2_Click(object sender, EventArgs e)
            {
                this.Close();
            }
     
            private void Form2_Load(object sender, EventArgs e)
            {
     
            }
     
            SplashScreen.Splash SS = new SplashScreen.Splash();
            private void button1_Click(object sender, EventArgs e)
            {
                if (textBox1_id.Text == "") { MessageBox.Show("Veuillez saisir le nom du fichier desiré", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); }
     
                if (textBox2_FRCdistant.Text == "") { MessageBox.Show("Veuillez saisir le chemin de destination desiré", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); }
     
                else
                {
     
                    this.Enabled = false;
                        SS.Show();
     
                    string FindPath = Directory.GetFiles(@"\\chemin_reseau", textBox1_id.Text, SearchOption.AllDirectories).FirstOrDefault();
     
                    SS.Close();
                    this.Enabled = true;
     
                    try                
     
     
                        {
                            File.Copy(@"\" + FindPath, @"\\" + textBox2_FRCdistant.Text + @"\d$\" + textBox1_id.Text);
     
                            notifyIcon1.BalloonTipText = ("Copie terminée avec succès !");
                            notifyIcon1.BalloonTipTitle = ("SCI_Assist");
                            notifyIcon1.BalloonTipIcon = ToolTipIcon.Info;
                            notifyIcon1.ShowBalloonTip(1000);
                        }
     
                    catch
     
                    {
                        MessageBox.Show("Impossible de copier le fichier ID vers l'endroit selectionné, il se peut que ce soit car le fichier existe deja dans la destination ou que le chemin de destination soit injoignable.", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
     
                }
     
     
     
            }
     
            //SplashScreen.Splash SS = new SplashScreen.Splash();
            private void Form2_Shown(object sender, EventArgs e)
            {
                this.Enabled = false;
                SS.Show();
     
                textBox1_id.AutoCompleteCustomSource.Clear();
                string[] lst = Directory.GetFiles(@"\\chemin_reseau", "*.*", SearchOption.AllDirectories);
                for (int i = 0; i < lst.Count(); i++)
                    lst[i] = new FileInfo(lst[i]).Name;
                textBox1_id.AutoCompleteCustomSource.AddRange(lst.OrderBy(a => a).ToArray());
     
                SS.Close();
                this.Enabled = true;
            }
     
            private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
            {
     
            }
        }
    }
    Un gros merci a eric pour sa classe qui permet de faire patienter l'utilisateur !

  20. #60
    Membre confirmé Avatar de Julien698
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2013
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2013
    Messages : 237
    Points : 473
    Points
    473
    Par défaut
    penses à cliquer sur le bouton "résolu" pour clôturer ton post.

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. Lister fichiers dans sous repertoires
    Par micka180 dans le forum VBScript
    Réponses: 2
    Dernier message: 26/11/2009, 11h34
  2. Copier et renommer un fichier de plusieurs repertoires differents
    Par Jessy2 dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 01/10/2008, 16h24
  3. Charger fichiers de plusieurs repertoires
    Par kabil.cpp dans le forum MATLAB
    Réponses: 9
    Dernier message: 12/09/2008, 14h29
  4. Lister fichier dans un repertoire distant
    Par toitoine01 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/06/2008, 10h30
  5. Comment Cherher un fichier sous plusieur repertoir
    Par zizo89 dans le forum Delphi
    Réponses: 3
    Dernier message: 17/05/2007, 21h32

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