Faire une sauvegarde des données TextBox et les récupérer à la demande.

Résolu
Tempus01 Messages postés 81 Date d'inscription mercredi 6 janvier 2021 Statut Membre Dernière intervention 27 septembre 2022 - Modifié le 6 janv. 2021 à 17:42
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 - 11 janv. 2021 à 11:53
Bonjour à tous,
Bonjour le Forum,

Je sollicite l'aide du Forum, j'ai fait plusieurs recherche sur le net mais je bloque.

j'ai un form avec 16 Textbox, 15 radioBouton et une CheckBox, Je souhaiterais sauvegarder les données des textbox, l'état des radioBouton et de la Checkbox, pour les récupérer au besoin.


J'ai un début de code qui sauvegarde 3 Textbox dans un fichier texte, mais il manque la sauvegarde de l'état des RadioBouton et de la CheckBox.



Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
 
        SaveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
        SaveFileDialog1.FilterIndex = 2
        SaveFileDialog1.RestoreDirectory = True
 
        If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
            Dim fileNumber As Integer
            fileNumber = FreeFile()
            FileOpen(fileNumber, SaveFileDialog1.FileName, OpenMode.Output)
            PrintLine(fileNumber, TextBox10.Text)
            PrintLine(fileNumber, TextBox8.Text)
            PrintLine(fileNumber, TextBox7.Text)
            FileClose(fileNumber)

        End If


-Pour le bouton de récupération des données il ne fonctionne pas du tout, voici le code.


 Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
 
        OpenFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
 
        ' OpenFileDialog1.Filter.index = 2
 
        OpenFileDialog1.RestoreDirectory = True
 
        If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
            'Dim fileNumber As Integer
            Dim fileNumber As New System.IO.StreamReader()
            fileNumber = FreeFile()
            FileOpen(fileNumber, OpenFileDialog1.FileName, OpenMode.Output)
            TextBox10.Text = fileNumber.ReadLine
            TextBox8.Text = fileNumber.ReadLine
            TextBox7.Text = fileNumber.ReadLine
            'PrintLine(fileNumber, TextBox7.Text)
            FileClose(fileNumber)
 
        End If

En plus des Textbox de saisie de valeurs "décimal et string", j'ai 11 Textbox en lecture seule qui affichent les résultats des calculs ainsi que 3 circular progress bar.

Je pense que seule les Textbox de saisie ont besoin d'être sauvegardées dans le fichier texte.

Merci à vous.

6 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
6 janv. 2021 à 15:54
0
Tempus01 Messages postés 81 Date d'inscription mercredi 6 janvier 2021 Statut Membre Dernière intervention 27 septembre 2022 2
6 janv. 2021 à 16:54
Bonjour cs_Le Pivert

Merci pour ta réponse rapide, mon appli fait des caluls de descente de charge pour diverses ouvrages "bâtiments principalement , je souhaite mettre en place une sauvegarde à chaque calculs réaliser pour les récupérer au besoin.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
7 janv. 2021 à 09:43
Si tu veux malgré tout passer par des fichiers texte voir ceci :

https://codes-sources.commentcamarche.net/source/51785-memoriser-valeur

@+ Le Pivert
0
Tempus01 Messages postés 81 Date d'inscription mercredi 6 janvier 2021 Statut Membre Dernière intervention 27 septembre 2022 2
7 janv. 2021 à 18:51
Super merci pour ce lien, je vient de le tester, il répond bien à la demande, mais est-il possible d'avoir un code afin de passer par un SaveFileDialog pour choisir l'emplacement de la sauvegarde et par un openFileDialogue pour récupérer cette sauvegarde ?

Partie qui enregistre :

Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
céation_fichier()
fichier = My.Application.Info.DirectoryPath & "\TextValue.txt" 'chemin du fichier texte
Dim monStreamWriter As StreamWriter = New StreamWriter(fichier)
monStreamWriter.WriteLine(CheckBox1.Checked.ToString)
monStreamWriter.WriteLine(RadioButton1.Checked.ToString)
monStreamWriter.WriteLine(TextBox1.Text)
monStreamWriter.WriteLine(Label1.Text)
monStreamWriter.WriteLine(ComboBox1.Text)
monStreamWriter.WriteLine(Me.WindowState = FormWindowState.Maximized)
'Fermeture du StreamWriter (Trés important)
monStreamWriter.Close()
End Sub

et celle qui récupère les données.
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
fichier = My.Application.Info.DirectoryPath & "\TextValue.txt"
Dim monStreamReader As StreamReader = New System.IO.StreamReader(fichier) 'Stream pour la lecture avec caractères accentués du fichier
If monStreamReader.ReadLine = "True" Then
CheckBox1.Checked = True
Else
CheckBox1.Checked = False
End If
If monStreamReader.ReadLine = "True" Then
RadioButton1.Checked = True
Else
RadioButton2.Checked = True
End If
TextBox1.Text = monStreamReader.ReadLine
Label1.Text = monStreamReader.ReadLine
ComboBox1.Text = monStreamReader.ReadLine
If monStreamReader.ReadLine = "True" Then
Me.WindowState = FormWindowState.Maximized
Else
Me.WindowState = FormWindowState.Normal
End If
'Fermeture du StreamReader (Trés important)
monStreamReader.Close()
End Sub
Private Sub céation_fichier()
' creer un nouveau fichier
Dim path As String = (Application.StartupPath & "\TextValue.txt")
If IO.File.Exists(path) Then
Exit Sub
Else
IO.File.Create(Application.StartupPath & "\TextValue.txt")
End If
End Sub
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
7 janv. 2021 à 19:03
La méthode que j'ai utilisé est la plus simple et ne nécessite pas d'interventions manuelles!

Mais si tu le désires consulte ces 2 sites:

https://docs.microsoft.com/fr-fr/dotnet/api/system.windows.forms.openfiledialog?view=net-5.0

https://docs.microsoft.com/fr-fr/dotnet/api/system.windows.forms.savefiledialog?view=net-5.0

@+ Le Pivert
0
Tempus01 Messages postés 81 Date d'inscription mercredi 6 janvier 2021 Statut Membre Dernière intervention 27 septembre 2022 2
Modifié le 8 janv. 2021 à 19:55
Merci pour les liens, open file et save file fonctionnent, mais je bloque avec la ComboBox1 et les radiobutton qui sont dedans.

Je ne trouve pas le code qui permet de lire et de sauvegarder leur valeurs checked.


 Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click


        ' Pour la lecture du fichier 

          Load_RRI.Filter = "RRI_txt files (*.txt)|*.txt"
        Load_RRI.FilterIndex = 2
        If Load_RSI.ShowDialog = 1 Then
            Dim StrReader As New System.IO.StreamReader(Load_RRI.FileName) 

            ' Lecture du fichier et assigne le contenu de la ligne correspondante à la textbox

            TextBox10.Text = StrReader.ReadLine
        TextBox8.Text = StrReader.ReadLine
            TextBox7.Text = StrReader.ReadLine
            RadioButton1.Checked = CBool(StrReader.ReadLine)
            CheckBox1.Checked = CBool(StrReader.ReadLine)
            GroupBox1.Controls.Add(RadioButton2.Checked) = StrReader.ReadLine
            'GroupBox1.Text = StrReader.ReadLine
            'Fermeture de ton flux
            StrReader.Close()

        End If

    End Sub


    Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
             
        Save_RRI.Filter = "RRI_txt files (*.txt)|*.txt" '|All files (*.*)|*.*"
        Save_RRI.FilterIndex = 2
        Save_RRI.RestoreDirectory = True

        If Save_RSI.ShowDialog() = DialogResult.OK Then
            Dim Rbutton1 As Boolean
            Dim fileNumber As Integer
            fileNumber = FreeFile()
            FileOpen(fileNumber, Save_RRI.FileName, OpenMode.Output)
            PrintLine(fileNumber, TextBox10.Text)
            PrintLine(fileNumber, TextBox8.Text)
            PrintLine(fileNumber, TextBox7.Text)
            PrintLine(fileNumber, RadioButton1.Checked.ToString)
            PrintLine(fileNumber, CheckBox1.Checked.ToString)

              PrintLine(fileNumber, Me.GroupBox1.Controls.Add(Me.RadioButton2)) 'bug'

              FileClose(fileNumber)

        End If
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
8 janv. 2021 à 18:49
Pour cette ligne de code:

PrintLine(fileNumber, Me.GroupBox1.Controls.Add(Me.RadioButton2)) 'bug'


Il suffit de t'inspirer de celle ci

GroupBox1.Controls.Add(RadioButton2.Checked) = StrReader.ReadLine


Pourquoi avoir changer:

monStreamWriter.WriteLine


par

PrintLine
?
0

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

Posez votre question
Tempus01 Messages postés 81 Date d'inscription mercredi 6 janvier 2021 Statut Membre Dernière intervention 27 septembre 2022 2
Modifié le 8 janv. 2021 à 22:03
Merci pour la ligne de code,

GroupBox1.Controls.Add(RadioButton2.Checked) = StrReader.ReadLine

mais j'ai une erreur qui s'affiche -impossible de convertir une valeur de type Boolean en "Control" avec RadioButton2.Checked souligné en rouge.

Pour PrintLine, c'est parce que je n'ai pas réussi à adapter votre code "manque de connaissances de ma part", voici le code que j'ai essayé d'adapter .

Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
Save_RRI.Filter = "RSI_txt files (*.txt)|*.txt" '|All files (*.*)|*.*"
Save_RRI.FilterIndex = 2
Save_RRI.RestoreDirectory = True

'chemin du fichier texte

'If Save_RRI.ShowDialog() = DialogResult.OK Then

Dim monStreamWriter As StreamWriter ' = New StreamWriter(fichier)

'bug la variable monStreamWriter est utilisée avant qu'une valeur lui ai été assignée

monStreamWriter.WriteLine(CheckBox1.Checked.ToString)
monStreamWriter.WriteLine(RadioButton1.Checked.ToString)
monStreamWriter.WriteLine(TextBox7.Text)
monStreamWriter.WriteLine(TextBox8.Text)
monStreamWriter.WriteLine(TextBox10.Text)

'Fermeture du StreamWriter (Trés important)
monStreamWriter.Close()

' End If
End Sub
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
9 janv. 2021 à 12:16
Comme ceci:

Option Explicit On
Imports System.IO
Public Class Form2
    Dim fichier As String


 Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        'lire
        Dim ofnDialog As New OpenFileDialog
        With ofnDialog
            .Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
            .FilterIndex = 1
            If .ShowDialog() = DialogResult.OK Then
                fichier = .FileName
               ' Insert code to read the stream here.
                Dim monStreamReader As StreamReader = New System.IO.StreamReader(fichier)
                TextBox1.Text = monStreamReader.ReadLine
                If monStreamReader.ReadLine = "True" Then
                    RadioButton1.Checked = True
                Else
                    RadioButton2.Checked = True
                End If
                'Fermeture du StreamReader (Trés important)
                monStreamReader.Close()
                Else
                Exit Sub
            End If
        End With
        
    End Sub
    Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
        'ecrire
        Dim saveFileDialog As New SaveFileDialog()
        With saveFileDialog
            .Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
            .FilterIndex = 1
            If .ShowDialog() = DialogResult.OK Then
                fichier = .FileName
                Dim monStreamWriter As StreamWriter = New StreamWriter(fichier)
                monStreamWriter.WriteLine(TextBox1.Text)
                monStreamWriter.WriteLine(RadioButton1.Checked.ToString)
                'Fermeture du StreamWriter (Trés important)
                monStreamWriter.Close()
            Else
                Exit Sub
            End If
        End With
    End Sub
End Class


voilà

@+ Le Pivert
0
Tempus01 Messages postés 81 Date d'inscription mercredi 6 janvier 2021 Statut Membre Dernière intervention 27 septembre 2022 2
9 janv. 2021 à 14:26
Super ! Merci beaucoup.
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
11 janv. 2021 à 11:53
Bonjour !
Si ce problème est résolu prière de clôturer ce post avec le bouton adéquat !
Merci !
0
Rejoignez-nous