Memoriser_valeur

Soyez le premier à donner votre avis sur cette source.

Vue 5 327 fois - Téléchargée 344 fois

Description

Mémoriser à la fermeture de l'application certaines valeurs dans un fichier texte: WindowState, Couleur personnalisées, ComboBox, TextBox, Label, CheckBox,RadioButton.
Emploi pour écrire dans le fichier texte de:
Imports System.IO
StreamWriter et StreamReader
un autre Form a ses contrôles sauvegardés par la propriété: Application Settings.

Source / Exemple :


Voir zip

Conclusion :


Je pense que cela peut interesser les débutants de la création,l'écriture,la lecture dans un fichier texte

Codes Sources

Ajouter un commentaire

Commentaires

Adn56
Messages postés
1172
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1 -
Salut, passe directement tes lignes à écrire c'est plus simple non ?
Private Sub Form1_FormClosing
Dim monStreamWriter As StreamWriter = New StreamWriter(fichier)
31. monStreamWriter.WriteLine(CheckBox1.Checked.tostring )
32. monStreamWriter.WriteLine(RadioButton1.Checked.tostring)
33. monStreamWriter.WriteLine(TextBox1.Text)
34. monStreamWriter.WriteLine(comboBox1.Text)
36. monStreamWriter.Close()
end sub
pense à tester, aussi, que fichier n'est pas vide et que le chemin est toujours valide ;)
pour ton clear() essaye de le remplacer par un truc comme ça, cela marche avec les streams
myFileStream = File.Create(fichier) ' création d'un nouveau fichier à chaque sauvegarde

bonne prog ++
cs_Le Pivert
Messages postés
6424
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
8 décembre 2019
91 -
Bonjour ADN56,
Je te remercie de m'avoir éclairé sur les parties du code qui laissées à désirer. Cela le raccourci et il n'y a pas de lignes inutiles.Bonne idée de créer un nouveau fichier à chaque fermeture.
@+ Le Pivert
Adn56
Messages postés
1172
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1 -
salut, de rien. Dans le cas de données plus volumineuse et/ou plus complexe il est préférable de sérialiser en binaire ou xml. voici un exemple en binaire.
1-création d'une classe sérialisable qui reprend tes valeurs
2-sub de savegarde
3- sub de lecture, tu le vois c'est pas plus mal comme méthode et surtout plus souple.

Option Strict On
Imports System
Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary

<Serializable()> Public Class config
' propriétées
Public TXTtextbox, TXTcombobox As String
Public CHKbox, CHKradio as boolean
'etc....

'----------------------------------------------------------------------
' Sub qui sérialise en binaire dans le fichier passé en paramétre
'----------------------------------------------------------------------
Public Sub save(ByVal fichier As String)
If fichier = String.Empty Then Exit Sub 'quit la sub si aucun fichier ouvert avant la fermeture.
Dim myFileStream As Stream = Nothing

Try
myFileStream = File.Create(fichier) ' création d'un nouveau fichier à chaque sauvegarde
Dim serializer As New BinaryFormatter
serializer.Serialize(myFileStream, Me)
myFileStream.Close()

Catch e As DirectoryNotFoundException

Affiche_erreur("Répertoire introuvable, vérifier la présence du disque amovible si vous en utilisez un", e.Message)

Catch e As FileNotFoundException ' n'arrive jamais car file create à chaque appel de SAve

Affiche_erreur("Fichier introuvable, vérifier la présence du disque amovible si vous en utilisez un", e.Message)

'Catch e As FileLoadException
Catch e As Exception

Affiche_erreur("erreur d'accés au fichier, Ex : Lecture seul", e.Message)

Finally

If Not myFileStream Is Nothing Then myFileStream.Close()
End Try

End Sub

'----------------------------------------------------------------------
' fonction qui lit le fichier sérialisé
'----------------------------------------------------------------------
Public Function load(ByVal fichier As String) As Boolean
Dim myFileStream As Stream = Nothing

Try
myFileStream = File.OpenRead(fichier)
Dim deserializer As New BinaryFormatter()
Dim lecture As New config
lecture = CType(deserializer.Deserialize(myFileStream), config)
myFileStream.Close()

With Me
.TXTtextbox = lecture.TXTtextbox
.TXTcombobox = lecture.TXTcombobox
.CHKbox = lecture.CHKbox
.CHKradio = lecture.CHKradio
End With

Return True

Catch e As Exception

Affiche_erreur("erreur d'accés au fichier", e.Message)
Return False

Finally

If Not myFileStream Is Nothing Then myFileStream.Close()
End Try
End Function
end class

dans ta form tu déclare une instance de cette class et tu appel les méthodes save et load pour retrouver tes valeurs. il te suffit dés lors de les réatrribuer à tes controls.

dim cetteconfig as new config
form load
cetteconfig.load(fichier)
textbox1.text = cetteconfig.TXTbox
Checkbox1.checked = cetteconfig.CHKbox (c'est bien un boolean)


form close
cetteconfig.save(fichier)
Adn56
Messages postés
1172
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1 -
Pour finir sur ce sujet, dans ton cas, la meilleur méthode reste encore de passer par le fichier My.setting. Cela est natif dans VS et trés simple d'utilisation.
kenavo (sous la canicule)
Mayzz
Messages postés
2811
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
19 -
Oui en effet ADN les paramètres d'applications sont la pour ca, je ne vois pas l'utilité d'une telle source...

De plus les valeurs sont enregistés au format texte brut donc bien chiant pour la récup comme le montre ce bout de code :

If ligne_check = "True" Then
CheckBox1.Checked = True
Else
CheckBox1.Checked = False
End If

Pour enregistrer des valeurs dans un fichier il y a aussi la sérailisation en .Net

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.