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 :

[VB.NET]Comment afficher 1 progressbar lors d'une lecture fichier ?


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 14
    Points : 13
    Points
    13
    Par défaut [VB.NET]Comment afficher 1 progressbar lors d'une lecture fichier ?
    Bonjour à tous,

    Je lis un fichier TXT ligne par ligne et je voudrais
    afficher dans la meme fenetre (ou une autre fenetre)
    des informations pour l'utilisateur. Voici mon code :

    Me.OpenFileDialog1.Title = " Sélection d'un fichier AIS "
    Me.OpenFileDialog1.Filter = "txt files (*.txt)|*.txt"
    If Me.OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
    ' Ouverture du fichier
    Dim Fichier As StreamReader = New StreamReader(Me.OpenFileDialog1.OpenFile())
    Form_Info_Processus.ProgressBar.Maximum = Fichier.BaseStream.Length
    Form_Info_Processus.Show()
    While Fichier.EndOfStream = False
    If String.IsNullOrEmpty(Fichier.ReadLine()) = False Then
    Form_Info_Processus.ListBox1.Items.Add(Fichier.ReadLine())
    Form_Info_Processus.ProgressBar.Increment(Fichier.BaseStream.Position
    End If
    End While
    Fichier.Close()
    Else
    MsgBox("Aucun fichier sélectionné", MsgBoxStyle.Exclamation, "Aucun Fichier")
    End If


    Pour résumer , j'affiche pour chaque ligne lu , son contenu dans
    une liste box et j'incrémente de 1 la barre de progression.

    Mes pbs sont les suivants :

    1--> Tous s'affiche d'un seule coup , la fenetre d'information
    s'affiche d'un seul coup , l'utilisateur ne voit pas le déroulement
    du processus ligne par ligne.
    Comment puis je resoudre ce probleme ?

    2--> Lorsque je choisi mon vrai fichier TXT que je dois traiter
    rien ne marche il fait 50 Mo, tous ce plante avec l'erreur sur ma
    boucle while disant que Fichier.ReadLine()) = Nothing se qui ne devrait jamais
    arriver comme mon While est While Fichier.EndOfStream = False ????
    Je n'ai aucune idée pour resoudre se Pb ?


    Merci d'avance de m'aider , car je suis à cours d'idée .

    laurent

  2. #2
    Xno
    Xno est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Points : 83
    Points
    83
    Par défaut
    Salut,

    1. je pense qu'il te faut créer un thread dans lequel tu vas mettre ton code de lecture ligne par ligne du fichier texte et de la mise à jour de ta progressbar (éventuellement forcer un rafraichissement du contôle avec un Invalidate()...). C'est la solution la plus propre. Sinon, essaie d'abord de faire un petit Thread.Sleep avec quelques dizaines de ms pour laisser le temps à ta Form de se rafraîchir. Si ça ne fonctionne pas, il faut faire un thread pour s'occuper du traitement pour que cela n'impacte pas la partie graphique.

    2. Pour ce point, je n'en sais trop rien. A la limite, change la condition de ta boucle en faisant un test sur la valeur de retour du ReadLine().

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 238
    Points : 269
    Points
    269
    Par défaut
    1. Xno a raison je pense aussi que l'utilisation d'un Thread est vitale dans ce genre de situation. Si tu te passe de Thread ton IHm va rester bloqué le temps de la lecture du fichier. Si il fait 50 Mo ca peux etre long.
    Ton problème d'affichage doit venir de la je pense.

    2. Je pense qu'il doit y avoir un petit problème avec l'utilisation du StreamReader et du ReadLine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    sr = New StreamReader(NomFichier)
    sLine = sr.ReadLine()
     
    While Not sLine Is Nothing
          sLine = sr.ReadLine()
    End While
    Je pense que ta condition d'arret actuelle n'est pas censé faire ce que tu pense... regarde dans la MSDN l'utilisation exacte de EndOfStream.


    J'ai trouver ca dans la FAQ Vb.Net http://faqvbnet.developpez.com/?page...adwritetxtfile

    Bonne chance

Discussions similaires

  1. [Report Manager][.NET]Comment afficher ou imprimer un état déjà enregistré
    Par FRED.G dans le forum Autres outils décisionnels
    Réponses: 5
    Dernier message: 24/10/2018, 10h51
  2. Ignorer des caractères lors d'une lecture fichier
    Par Inaky dans le forum Langage
    Réponses: 9
    Dernier message: 06/11/2011, 15h25
  3. comment afficher le sablier lors d'une exécution?
    Par alassanediakite dans le forum VBScript
    Réponses: 7
    Dernier message: 09/10/2007, 00h39
  4. Réponses: 6
    Dernier message: 19/05/2006, 14h22
  5. Réponses: 8
    Dernier message: 18/05/2006, 15h30

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