Afficher liste de fichier dans listbox (ok) + afficher le contenu du fichier dan [Résolu]

Signaler
Messages postés
261
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
22 septembre 2012
-
Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
-
Bonsoir,

Je ne suis pas programmeur mais plutôt bidouilleur sur vb.net
Je créé des petits programme pour mes besoins et parfois par plaisir.
En ce moment j'essai de créer un prog des gestion de client.
Donc j'ai une forme sur laquelle j'ai inséré une listbox et un textbox.
Dans ma listbox sont affiché la liste des fichiers contenu dans un dossier.
Je souhaiterai que le fichier .txt que je selectionne dans la listbox s'affiche (ou même se copie dans le textbox, ce qui me faciliterai la mise a jour)
Après de multitudes de recherche/test je ne parvient pas à obtenir ce que je veux.
J'arrive seulement a retourner avec selecteditem mais ça me réécris le nom du fichier.
Je me tourne donc vers vous.

Voici un screen pour que vous compreniez mieux :


et voici le code... (récupéré ici dans la plupart des cas, je vous en remercie)

Imports System.IO

Public Class Form1


    
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Dossier As String = "Clients"
        Dim sDossier() As String = System.IO.Directory.GetFiles(Dossier)
        Dim Nfichier As String
        Me.ListBox1.Items.Clear()

        For Each Nfichier In sDossier
            Me.ListBox1.Items. _
            Add(Microsoft.VisualBasic.Right(Nfichier, (Len(Nfichier) - Len(Dossier))))
            ListBox1.SelectedItem = TextBox1.Text
        Next
    End Sub


    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        TextBox1.Text = ListBox1.SelectedItem

    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

    End Sub
End Class


Merci d'avance !

27 réponses


TextBox1.Text = New IO.StreamReader(Dossier & ListBox1.Text).ReadToEnd

Je suis fatigué
Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
155
Bonjour,

Ce n'est pas compliqué, c'est juste une bonne habitude à prendre.

Tes programmes seront plus clairs et seront plus facile à lire et debugger.

Utiliser les fonctions intégrées au framework et axées .NET te permettront de simplifier grandement ton code.

Quelle ligne est la plus claire :
Me.ListBox1.Items.Add(Microsoft.VisualBasic.Right(Nfichier, (Len(Nfichier) - Len(Dossier))))
ou
Me.ListBox1.Items.Add(IO.Path.GetFileName(Nfichier))
?

Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
155
Bonjour,

Dim lLines as List(Of String)=New List(Of String)
    lLines.Add(Now())
    lLines.Add(TextBox1.Text)
    lLines.Add(TextBox2.Text)

    Dim lFileName as String=Application.StartupPath() 'Chemin de l'executable
    lFileName=Io.Path.Combine(lFileName,"Clients") 'Sous dossier
    lFileName=Io.Path.Combine(lFileName,Textbox1.text+".Txt") 'Fichier

    Io.File.WriteAllLines(lFileName,lLines)


J'ai retiré le Try Catch, mais il serait à mettre sur le Io.File.WriteAllLines.

Penses aussi à nommer tes contrôles de manière cohérente, TextBox1 parle moins que TxtPrenom par exemple.

Contrôles aussi la saisie, car si TextBox1 Contient des * et autres caractères interdits, ça posera problème.

La ligne :
TargetFile.WriteLine(Now())
Me laisse penser que tu n'as pas activer Option Strict, ce serait une bonne habitude à prendre que de l'activer, ça t'éviteras pas mal de problèmes d'exécution.

Messages postés
261
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
22 septembre 2012

Oups désolé pour la taille du screen.

Bonsoir,

textbox1.text = listbox1.text

Tout simplement ;)

Bonne soirée.
Messages postés
261
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
22 septembre 2012

Bonsoir banana32 merci pour ta réponse,

J'avais déjà essayer, je viens de retenter et je te confirme que ça me copie le nom du ficher et non son contenu.

Tu veux surement parler de l'affichage du contenu du fichier ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Bonjour,

euh ... je crois (mais je suis peut-être fatigué) que ce qu'il veut mettre dans la textbox n'est pas le nom du fichier, mais ... son contenu .
Va falloir l'ouvrir (open ?), le lire d'un seul tenant (stream) et l'écrire dans la textbox
Cela ne devrait représenter aucun problème sous VB.Net (pas plus que sous VB6).
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Ah ! croisés


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Nos posts se sont croisés, tu vas devoir utiliser la classe io.streamreader afin de lire ton fichier afin de l'afficher.
TextBox1.Text = New IO.StreamReader("monfichier.txt").ReadToEnd


Bonne prog.
Messages postés
261
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
22 septembre 2012

Merci pour vos réponses,

Justement comment dire au programme qu'il ouvre le fichier associé au nom séléctionné dans un textbox depuis la listbox.
Je ne peux pas faire :
TextBox1.Text = New IO.StreamReader("monfichier.txt").ReadToEnd
Car je n'ai pas acces au nom des fichiers depuis l'éditeur.
Oulala dur dur.
Vous me comprenez ?

Sers toi de ta variable Dossier :
TextBox1.Text = New IO.StreamReader(Dossier & "monfichier.txt").ReadToEnd
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
et de ListBox1.SelectedItem

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
encore croisés

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Merci de ton soutient ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
poas de quoi.
Mais que la fatigue ne te fasse pas oublier le ""


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Non je crois qu'il l'a mise dans sa variable
Messages postés
261
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
22 septembre 2012

Yes merci bien ça fonctionne !

Bonne soirée à vous et à bientôt
Messages postés
261
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
22 septembre 2012

C'est mon premier post, je dois mettre résolu quelque part ou c'est le "réponse accépté" qui s'en charge ?

Merci encore !:)
Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
155
Bonjour,

J'ajouterais face à cette ligne :
Me.ListBox1.Items.Add(Microsoft.VisualBasic.Right(Nfichier, (Len(Nfichier) - Len(Dossier))))

Regardes aussi :
System.IO.Path.GetFileName
Pour la concaténation chemin/fichier :
System.IO.Path.Combine

Justepour faire un code plus cohérent et retirer les appels aux fonctions "VB6 like".

Len(...) -> MaChaine.Length
Mid(Chaine,...) -> Chaine.SubString(...)

Entre autres.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---