IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Persistance des settings utilisateurs


Sujet :

VB.NET

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut Persistance des settings utilisateurs
    Hello,

    Ca doit être totalement con mais je passe à côté.

    J'ai un écran où l'utilisateur pour redimensionner certains contrôles et j'aimerais que la taille qu'il a choisi soit utilisée à la prochaine ouverture de l'application.

    J'ai donc ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private Sub groupBox_Resize(sender As Object, e As EventArgs) Handles gbPers.Resize, gbCode.Resize
            Dim ctl As GroupBox = CType(sender, GroupBox)
            Select Case ctl.Name
                Case gbPers.Name
                    My.Settings.persWidth = gbPers.Width
                Case gbCode.Name
                    My.Settings.codeWidth = gbCode.Width
            End Select
        End Sub
    Je n'ai volontairement pas mis My.Settings.Save() car j'ai coché l'option dans le projet qui dit de sauvegarder les settings à la fermeture.

    Pourtant, quand je relance l'application, la taille n'est pas conservée. C'est de nouveau celle par défaut...

    Ca m'a pourtant l'air d'un truc trivial à faire. Une idée quelqu'un ?
    Kropernic

  2. #2
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut Précision
    Le fichier user.config est bien créé dans le répertoire AppData\Local et j'ai le code suivant pour restaurer la taille sauvegardée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Private Sub RestoreUserPreferences()
            If My.Settings.persWidth > 0 Then
                Me.gbPers.Width = My.Settings.persWidth
            End If
            If My.Settings.codeWidth > 0 Then
                Me.gbCode.Width = My.Settings.codeWidth
            End If
        End Sub
    Cette sub est appelée dans le constructeur du formulaire. Serait-ce trop "tôt" ?
    Kropernic

  3. #3
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut Précision 2
    Dans le constructeur, pour éviter que les valeurs des settings soient affectés par ce qu'il se passe lors d'initialisation des contrôles, j'ai fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            RestoreUserPreferences()
            AddHandler gbPers.Resize, AddressOf groupBox_Resize
            AddHandler gbCode.Resize, AddressOf groupBox_Resize
    J'ai donc bien sûr retiré la clause Handles de la déclaration de la Sub groupBox_Resize.

    Mais cela ne fonctionne toujours pas.
    Kropernic

  4. #4
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut Solution
    En déplaçant les 3 lignes de code de mon précédent message du constructeur vers la sub qui gère l'événement Load, alors ça fonctionne bien.

    C'est donc forcément un "conflit" avec ce qu'il se passe lors de la création/initialisation du formulaire.

    Quelqu'un aurait-il le détail de ce que .NET fait à ce moment-là ? Pas évident de trouver un truc clair sur la toile à ce sujet...
    Kropernic

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. My.Setting rendre persistant des types perso
    Par STEPHV9111 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 11/01/2012, 12h29
  2. Utiliser MySqlAdmin avec des droits utilisateurs sur XP
    Par thorgal85 dans le forum Outils
    Réponses: 2
    Dernier message: 18/03/2005, 12h19
  3. [Struts][DynaActionForm et persistance des objets]
    Par jcos dans le forum Struts 1
    Réponses: 4
    Dernier message: 22/12/2004, 09h15
  4. Persistance des données en mémoire
    Par giviz dans le forum Architecture
    Réponses: 13
    Dernier message: 21/12/2004, 09h44
  5. [Strategie]persistance des données
    Par altropus dans le forum Persistance des données
    Réponses: 6
    Dernier message: 04/11/2004, 04h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo