Meilleur auteur de réponses
sauvegarder une listebox

Question
-
Réponses
-
Bonjour,
Essayer le code suivant :
Dim cheminFichier = "xxxx.txt" 'Le nom et chemin que vous désirez attribuer à votre fichier. Dim items(Me.ListBox1.Items.Count - 1) As Object Me.ListBox1.Items.CopyTo(items, 0) System.IO.File.WriteAllLines(cheminFichier, items.Select(Function(item) item.ToString()))
Le code suppose que votre ListBox s'appelle ListBox1.Si vous voulez que les données ne soient pas écrasées, utiliser System.IO.File.AppendAllLines au lieu de System.IO.File.WriteAllLines.
Cordialement.
- Proposé comme réponse TroxsaEditor mardi 13 décembre 2011 15:54
- Marqué comme réponse Michel K dimanche 18 décembre 2011 18:22
-
Bonsoir Nicolas,
Pour ouvrir une boite de dialogue, il existe la classe SaveFileDialog dont voici un exemple d'utilisation :
Dim cheminfichier As String = "" Dim sfd As New SaveFileDialog sfd.Filter = "Fichiers textes (*.txt)|*.txt" 'le filtre sur les extensions des fichiers sfd.InitialDirectory = "C:\" 'repertoire initial If sfd.ShowDialog = DialogResult.OK Then 'si l'utilisateur valide un fichier pour la sauvegarde cheminfichier = sfd.FileName 'sfd.FileName contient le chemin du fichier sélectionné End If
Pour sauvegarder l'état d'une listbox, il faut enregistrer les données soit sous forme de fichier de configuration qu'il faudra lire à l'ouverture du programme, sois via les paramètres de l'application.
Voici un court exemple :
'sauvegarde des éléments (après avoir crée element1 etc) My.Settings.element1 = "premier item de la liste box ici" '... My.Settings.Save() 'on sauvegarde
Et pour lire les paramètres afin de remplir automatiquement la listbox :ListBox1.Items.Add(My.Settings.element1)
A l'avenir, séparez les threads afin d'avoir un thread = un problème.Merci et bonne soirée.
N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards. Contact- Marqué comme réponse Ciprian Duduiala mardi 20 décembre 2011 07:34
Toutes les réponses
-
Bonjour,
Essayer le code suivant :
Dim cheminFichier = "xxxx.txt" 'Le nom et chemin que vous désirez attribuer à votre fichier. Dim items(Me.ListBox1.Items.Count - 1) As Object Me.ListBox1.Items.CopyTo(items, 0) System.IO.File.WriteAllLines(cheminFichier, items.Select(Function(item) item.ToString()))
Le code suppose que votre ListBox s'appelle ListBox1.Si vous voulez que les données ne soient pas écrasées, utiliser System.IO.File.AppendAllLines au lieu de System.IO.File.WriteAllLines.
Cordialement.
- Proposé comme réponse TroxsaEditor mardi 13 décembre 2011 15:54
- Marqué comme réponse Michel K dimanche 18 décembre 2011 18:22
-
Est-ce que la solution de Mourad réponde à vos besoins ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.
Cordialement,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
-
-
Bonjour
oui Merci par contre j'aurai une autre question car en faite je voudrai pourvoir choisir le chemin moi meme c'est à dire qu'une boîte de dialogue s'ouvre et que je peut choisir ?
Ensuite si il était possible de sauvegarder ces a dire quand je quitte le programme et que je le réouvre que ma listebox reste avec les élément rentré au paravent ?
Cordialement
Nicolas
-
Bonsoir Nicolas,
Pour ouvrir une boite de dialogue, il existe la classe SaveFileDialog dont voici un exemple d'utilisation :
Dim cheminfichier As String = "" Dim sfd As New SaveFileDialog sfd.Filter = "Fichiers textes (*.txt)|*.txt" 'le filtre sur les extensions des fichiers sfd.InitialDirectory = "C:\" 'repertoire initial If sfd.ShowDialog = DialogResult.OK Then 'si l'utilisateur valide un fichier pour la sauvegarde cheminfichier = sfd.FileName 'sfd.FileName contient le chemin du fichier sélectionné End If
Pour sauvegarder l'état d'une listbox, il faut enregistrer les données soit sous forme de fichier de configuration qu'il faudra lire à l'ouverture du programme, sois via les paramètres de l'application.
Voici un court exemple :
'sauvegarde des éléments (après avoir crée element1 etc) My.Settings.element1 = "premier item de la liste box ici" '... My.Settings.Save() 'on sauvegarde
Et pour lire les paramètres afin de remplir automatiquement la listbox :ListBox1.Items.Add(My.Settings.element1)
A l'avenir, séparez les threads afin d'avoir un thread = un problème.Merci et bonne soirée.
N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards. Contact- Marqué comme réponse Ciprian Duduiala mardi 20 décembre 2011 07:34
-
-
Bonjour,
Ce n'est pas la listbox elle-même qui sera sauvegardé mais par exemple un fichier texte contenant un élément de la listbox par ligne.
Ce dernier sera ensuite lu pour remplir la listbox.
N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards. Contact -
Ahh ok par contre j'ai rentré votre code :
Dim cheminfichier As String = ""
Dim sfd As New SaveFileDialog
sfd.Filter = "Fichiers textes (*.txt)|*.txt" 'le filtre sur les extensions des fichiers
sfd.InitialDirectory = "C:\" 'repertoire initial
If sfd.ShowDialog = DialogResult.OK Then 'si l'utilisateur valide un fichier pour la sauvegarde
cheminfichier = sfd.FileName 'sfd.FileName contient le chemin du fichier sélectionné
End Ifmais je ne trouve aucun fichier texte ??? avec le contenu de ma listebox !!!
Cordialement
Nicolas
-
Ahh ok par contre j'ai rentré votre code :
Dim cheminfichier As String = ""
Dim sfd As New SaveFileDialog
sfd.Filter = "Fichiers textes (*.txt)|*.txt" 'le filtre sur les extensions des fichiers
sfd.InitialDirectory = "C:\" 'repertoire initial
If sfd.ShowDialog = DialogResult.OK Then 'si l'utilisateur valide un fichier pour la sauvegarde
cheminfichier = sfd.FileName 'sfd.FileName contient le chemin du fichier sélectionné
End Ifmais je ne trouve aucun fichier texte ??? avec le contenu de ma listebox !!!
Cordialement
Nicolas
-
J'ai essayer ce code le fichier se crée bien mais il enregistre pas du tout ma listebox ????
Voici le code que j'ai mis
Private
Sub Savethetext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Savethetext.Click
Dim save As New
SaveFileDialog
save.FileName =
""
save.Filter =
"text files (*.txt)|*.txt"
save.Title =
"save"
save.ShowDialog()
Try
Dim write As New IO.StreamWriter
(save.FileName)
write.Write(ListBox1.Text)
write.Close()
Catch ex As Exception
Cordialement Nicolas
-
@Nicolas,
Voici le code complet et commenté (basé sur votre code) :
Public Class Form1 Private Sub Savethetext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Savethetext.Click Dim save As New SaveFileDialog() save.Filter = "text files (*.txt)|*.txt" save.Title = "save" If save.ShowDialog() = DialogResult.OK Then 'si l'utilisateur accepte d'enregistrer Try Using write As New IO.StreamWriter(save.FileName) For Each element As String In ListBox1.Items 'on écrit chaque élément de la listbox dans le fichier texte write.Write(element & vbNewLine) 'ne pas oublier vbNewLine car les elements ne contiennent pas le caractère nouvelle ligne Next End Using Catch ex As Exception 'TODO traiter l'erreur End Try End If End Sub Sub Readthetext() 'lit le fichier texte If IO.File.Exists("C:\<chemindufichiertexte>.txt") Then 'si déjà il existe, alors Using reader As New IO.StreamReader("C:\<chemindufichiertexte>.txt") 'on lit le contenu de ce fichier While reader.Peek <> False 'tant qu'on a pas tout lu ListBox1.Items.Add(reader.ReadLine()) 'on lit et ajoute chaque ligne du fichier texte dans la listbox End While End Using End If End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Readthetext() 'lit le fichier texte dès l'ouverture End Sub End Class
- Modifié Michel K jeudi 22 décembre 2011 14:59 Bon visiblement j'ai des problèmes pour coloriser le code, désolé
-
-
-
-
Bonsoir Nicolas,
Il y a plusieurs façon de le faire, par exemple créer plusieurs fichiers pour chaque liste (facile à faire mais pas l'idéal avec beaucoup de listboxes), ou encore faire tout dans un fichier en séparant les éléments des deux listboxes.
Voilà un exemple utilisant le même fichier avec 2 listboxes : (à noter quand dans ce cas précis il est possible d'optimiser la façon de faire)
Sub Readthetext() 'lit le fichier texte If IO.File.Exists("C:\<chemindufichiertexte>.txt") Then 'si déjà il existe, alors Using reader As New IO.StreamReader("C:\<chemindufichiertexte>.txt") 'on lit le contenu de ce fichier Dim LaListBox As ListBox = ListBox1 Dim contenu As String = reader.ReadToEnd Using sr As New IO.StringReader(contenu) While sr.Peek <> False Dim ligne As String = sr.ReadLine If ligne = "#separateur#" Then ligne = sr.ReadLine 'on lit la ligne suivante pour ne pas ajouter #separateur# à la listbox LaListBox = ListBox2 End If LaListBox.Items.Add(ligne) End While End Using End Using End If End Sub Private Sub Savethetext_Click((ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Savethetext.Click Dim save As New SaveFileDialog() save.Filter = "text files (*.txt)|*.txt" save.Title = "save" If save.ShowDialog() = DialogResult.OK Then 'si l'utilisateur accepte d'enregistrer Try Using write As New IO.StreamWriter(save.FileName) For Each element As String In ListBox1.Items 'on écrit chaque élément de la listbox dans le fichier texte write.Write(element & vbNewLine) 'ne pas oublier vbNewLine car les elements ne contiennent pas le caractère nouvelle ligne Next write.Write("#separateur#" & vbNewLine) For Each element As String In ListBox2.Items write.Write(element & vbNewLine) Next End Using Catch ex As Exception 'TODO traiter l'erreur End Try End If End Sub
Bonne soirée.
N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards. Contact- Modifié Michel K jeudi 29 décembre 2011 21:52
-
-
Bonjour,
J'ai entré ce code si mais mon fichier ne se remet pas dans la listbox1 !!!
Private
Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button13.Click
Try
Dim open As New
OpenFileDialog
open.FileName =
""
open.Filter =
"fichier texte (*.txt) |*.txt"
open.Title =
"Ouvrir"
open.ShowDialog()
Dim lire As New System.IO.StringReader
(open.FileName)
ListBox1.Text = lire.ReadToEnd
ListBox3.Text = lire.ReadToEnd
lire.Close()
Catch ex As
Exception
End Try
Quelqu'un peut m'aider?
Cordialement
Nicolas
-
Bonjour,
La procédure "Readthetext()" est à adapter à vos listboxes.
En l'occurrence, remplacer les noms des listboxes (1 et 2) par les vôtres.
Cette procédure prend en compte un fichier existant (ou crée par Savethetext_click)sous la forme :
element1_listbox1
element2_listbox2
#separateur#
element1_listbox2
element2_listbox2listbox1 et 2 indiquent simplement la première listbox et la deuxième.
Enfin :
ListBox1.Text = lire.ReadToEnd
ListBox3.Text = lire.ReadToEnd
Affichera au mieux le même contenu dans les deux listboxes.
Peut-être que j'ai du mal à comprendre votre démarche, peut-être qu'elle a changé entre temps ?
À l'avenir, veuillez créer un nouveau sujet pour ne pas s'éterniser sur un topic censé être résolu.
Bonne journée.
N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards. Contact- Modifié Michel K mardi 3 janvier 2012 12:55