Afficher liste de fichier dans listbox (ok) + afficher le contenu du fichier dan

Résolu
KcHeY Messages postés 261 Date d'inscription dimanche 23 mai 2004 Statut Membre Dernière intervention 22 septembre 2012 - 13 sept. 2011 à 20:58
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 14 sept. 2011 à 12:40
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

Utilisateur anonyme
13 sept. 2011 à 21:54
TextBox1.Text = New IO.StreamReader(Dossier & ListBox1.Text).ReadToEnd

Je suis fatigué
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
14 sept. 2011 à 09:24
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))
?

3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
14 sept. 2011 à 10:12
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.

3
KcHeY Messages postés 261 Date d'inscription dimanche 23 mai 2004 Statut Membre Dernière intervention 22 septembre 2012
13 sept. 2011 à 21:00
Oups désolé pour la taille du screen.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
13 sept. 2011 à 21:33
Bonsoir,

textbox1.text = listbox1.text

Tout simplement ;)

Bonne soirée.
0
KcHeY Messages postés 261 Date d'inscription dimanche 23 mai 2004 Statut Membre Dernière intervention 22 septembre 2012
13 sept. 2011 à 21:36
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.
0
Utilisateur anonyme
13 sept. 2011 à 21:37
Tu veux surement parler de l'affichage du contenu du fichier ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
13 sept. 2011 à 21:38
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
13 sept. 2011 à 21:38
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
0
Utilisateur anonyme
13 sept. 2011 à 21:41
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.
0
KcHeY Messages postés 261 Date d'inscription dimanche 23 mai 2004 Statut Membre Dernière intervention 22 septembre 2012
13 sept. 2011 à 21:45
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 ?
0
Utilisateur anonyme
13 sept. 2011 à 21:52
Sers toi de ta variable Dossier :
TextBox1.Text = New IO.StreamReader(Dossier & "monfichier.txt").ReadToEnd
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
13 sept. 2011 à 21:54
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
13 sept. 2011 à 21:55
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
0
Utilisateur anonyme
13 sept. 2011 à 21:56
Merci de ton soutient ucfoutu
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
13 sept. 2011 à 21:57
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
0
Utilisateur anonyme
13 sept. 2011 à 21:59
Non je crois qu'il l'a mise dans sa variable
0
KcHeY Messages postés 261 Date d'inscription dimanche 23 mai 2004 Statut Membre Dernière intervention 22 septembre 2012
13 sept. 2011 à 22:10
Yes merci bien ça fonctionne !

Bonne soirée à vous et à bientôt
0
KcHeY Messages postés 261 Date d'inscription dimanche 23 mai 2004 Statut Membre Dernière intervention 22 septembre 2012
13 sept. 2011 à 22:13
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 !:)
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
13 sept. 2011 à 23:38
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
---
0
Rejoignez-nous