Précédent   Forum du club des développeurs et IT Pro > Dotnet > Langages > VB.NET
VB.NET Forum d'entraide sur la programmation Visual Basic .NET. Avant de poster -> FAQ VB.NET, Articles VB.NET, Sources VB.NET
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 05/01/2013, 20h44   #21
kokonaru
Invité de passage
 
Homme
Étudiant
Inscription : janvier 2013
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2013
Messages : 11
Points : 1
Points : 1
Merci ca marche parfaitement voici le screen du programme qui permet d'enregistrer les paramétres


et le programme qui permet de visualiser les paramétres


Merci encore
kokonaru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2013, 22h17   #22
rv26t
Membre émérite
 
Hervé
Inscription : janvier 2007
Messages : 591
Détails du profil
Informations personnelles :
Nom : Hervé
Localisation : France

Informations forums :
Inscription : janvier 2007
Messages : 591
Points : 958
Points : 958
De rien,

C'est sympa de montrer le résultat.

Pense à mettre le sujet en résolu en cliquant sur le bouton .
rv26t est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2013, 23h32   #23
rv26t
Membre émérite
 
Hervé
Inscription : janvier 2007
Messages : 591
Détails du profil
Informations personnelles :
Nom : Hervé
Localisation : France

Informations forums :
Inscription : janvier 2007
Messages : 591
Points : 958
Points : 958
Citation:
Envoyé par kokonaru Voir le message
Merci mais j'ai pas bien compris la méthode que tu a utilisé mais elle marche parfaitement. ...
J'ai placé quelques commentaires.

Pour la sauvegarde
Code :
1
2
3
4
    Private Sub btnEnregistre_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnregistre.Click
        dicoTextBox.Clear()
        ' appel à la procédure qui ajoutera les noms et les valeurs des textbox dans le dictionnaire
        NoteTextBox(Me, dicoTextBox) ' le paramètre Me indique ici la Form (le paramètre conteneur de la procédure NoteTextBox recevra donc la Form)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    ''' <summary>Stoque toutes les données des textBox (Name,Text) dans un dictionnaire.</summary>
    ''' <param name="conteneur">un conteneur de textbox (form, panel, groupbox)</param>
    ''' <param name="UnDico">le dictionnaire contenant => clé : "nom textbox", valeur : "texte du textbox".</param>
    ''' <remarks>Procédure récursive sur les groupbox et panel.</remarks>
    Sub NoteTextBox(ByVal conteneur As Control, ByRef UnDico As Dictionary(Of String, String))
        For Each ctrl As Control In conteneur.Controls
            'select sur true (condition vrai), qui sera vérifié sur chaque case si "ctrl" correspond au type de controle 
            Select Case True
                Case TypeOf ctrl Is TextBox ' dans le cas ou le controle est un TextBox, la condition sera vrai
                    UnDico.Add(ctrl.Name, ctrl.Text) ' on ajoute le nom et le texte du TextBox dans le dictionnaire
                Case TypeOf ctrl Is GroupBox ' dans le cas ou le controle est un GroupBox, la condition sera vrai
                    ' appel à la procédure qui ajoutera les noms et les valeurs des textbox dans le dictionnaire (appel récursif)
                    NoteTextBox(ctrl, UnDico) ' ici le paramètre ctrl est un GroupBox (le paramètre conteneur de la procédure NoteTextBox recevra donc un GroupBox)
                Case TypeOf ctrl Is Panel
                    NoteTextBox(ctrl, UnDico)
            End Select
        Next
    End Sub
Code :
1
2
3
4
5
6
7
8
9
    Sub SaveDico(ByVal UnDico As Dictionary(Of String, String))
'...
            Dim ecrire As New System.IO.StreamWriter(savefile.FileName)
            ' Nous parcourons chaque éléments du dictionnaire que nous récupérons sous forme d'un ensemble clé, valeur.
            For Each element As KeyValuePair(Of String, String) In UnDico
                ' la clé s'inscrit en lieu et place de {0}, et le texte en {1}. ce qui donnera une chaine du genre "TextBox1|Toto". Chaine écrite dans le fichier
                ecrire.WriteLine("{0}|{1}", element.Key, element.Value)
            Next element
'...
Pour la lecture
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
    ''' <summary>Lecture du fichier de config, création et alimentation d'un dictionnaire avec le contenu du fichier.</summary>
    ''' <returns>renvoie un dictionnaire (Nom TextBox, Texte) rempli avec les valeurs à donner aux TextBox</returns>
    Function loadDico() As Dictionary(Of String, String)
'...
            UneLigne = srFichier.ReadLine
            While Not UneLigne Is Nothing
                'split permet de morceler une chaine suivant un caractère. 
                'Pour éviter d'utiliser un tableau, je procéde ainsi
                'UneLigne.Split("|")(0) permet de récupérer le 1er élément (la clé: le nom du TextBox)
                'et UneLigne.Split("|")(1) permet de récupérer le 2éme (la valeur: le texte du TextBox)
                UnDico.Add(UneLigne.Split("|")(0), UneLigne.Split("|")(1))
                UneLigne = srFichier.ReadLine
            End While
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    ''' <summary>Répartie les valeurs du dictionnaire dans les TexBox appropriés. (TextBox identifié par son nom)</summary>
    ''' <param name="conteneur">un conteneur de textbox (form, panel, groupbox)</param>
    ''' <param name="UnDico">le dictionnaire contenant => clé : "nom textbox", valeur : "texte du textbox". (Reçu par référence)</param>
    ''' <remarks>Procédure récursive sur les groupbox et panel.</remarks>
    Sub AffTextBox(ByVal conteneur As Control, ByRef UnDico As Dictionary(Of String, String))
        Try
            For Each ctrl As Control In conteneur.Controls   'parcour de la collection des contrôles du conteneur
                Select Case True                             'select sur true (condition vrai), qui sera vérifié sur chaque case si "ctrl" correspond au type de contrôle 
                    Case TypeOf ctrl Is TextBox
                        ' chaque ligne du dictionnaire étant constitué d'une clé et d'une valeur
                        ' avec la clé (le nom du TextBox traité (ctrl.Name)) on récupére la valeur (le texte) dans le dictionnaire que l'on affiche dans le TextBox.
                        ctrl.Text = UnDico(ctrl.Name)
                    Case TypeOf ctrl Is GroupBox
                        ' un GroupBox => appel récursif pour traiter les TextBox
                        AffTextBox(ctrl, UnDico)
                    Case TypeOf ctrl Is Panel
                        AffTextBox(ctrl, UnDico)
                End Select
            Next
La procédure "EffaceTextBox" est sur le même principe que les autres procédures récursives.

Si quelque chose t'échappe n'hésite pas à demander.

A+, Hervé.
rv26t est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 17h31.


 
 
 
 
Partenaires

Hébergement Web