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 :

Dictionary global : comment faire plus simple ? [Débutant]


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 15
    Points : 14
    Points
    14
    Par défaut Dictionary global : comment faire plus simple ?
    Bonjour,

    J'ai un petit programme, qui se sert dans plusieurs formes de dictionnaires statiques (dans le sens où ils ne sont jamais modifiés) sauf un (CollBool).

    J'ai donc créé un module où j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Friend CollBool As New Dictionary(Of Integer, Boolean)
        Friend CollCB2 As New Dictionary(Of Integer, CheckBox)
        Friend CollTB1 As New Dictionary(Of Integer, TextBox)
        Friend CollTB2 As New Dictionary(Of Integer, TextBox)
        Friend CollTB3 As New Dictionary(Of Integer, TextBox)
        Friend CollR1 As New Dictionary(Of Integer, Label)
        Friend CollR2 As New Dictionary(Of Integer, Label)
        Friend CollOLabel As New Dictionary(Of Integer, Label)
        Friend CollRLabel As New Dictionary(Of Integer, Label)
    ainsi qu'une public sub :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Public Sub LoadingParameters()
     
            For i As Integer = 1 To CollBool.Count
                If CollBool.Item(i) = False Then
                    CollTB1.Item(i).Hide()
                    CollTB2.Item(i).Hide()
                    CollTB3.Item(i).Hide()
                    CollR1.Item(i).Hide()
                    CollR2.Item(i).Hide()
                    CollOLabel.Item(i).Hide()
                    CollRLabel.Item(i).Hide()
                ElseIf CollBool.Item(i) = True Then
                    CollTB1.Item(i).Show()
                    CollTB2.Item(i).Show()
                    CollTB3.Item(i).Show()
                    CollR1.Item(i).Show()
                    CollR2.Item(i).Show()
                    CollOLabel.Item(i).Show()
                    CollRLabel.Item(i).Show()
                End If
            Next
    qui va permettre de loader ce que je souhaite afficher en fonction des settings.

    J'ai dans ApplicationEvents.vb ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Private Sub LoadApp(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles MyBase.Startup
                CollBool.Add(1, My.Settings.CBCobb1)
                CollBool.Add(2, My.Settings.CBRotation1)
    ...
    On remplit les dictionnaires
     
    puis
    Call LoadingParameters()
    où tous mes dictionnaires sont remplis à l'ouverture du logiciel.


    De ce que j'ai compris, ça devrait fonctionner ainsi : à l'ouverture du logiciel, tous mes dictionnaires (partagés entre toutes les forms) sont remplis. puis l'appli lance LoadingParameters, qui devraient afficher/cacher les textbox, etc concernées... Sauf que ça ne marche pas ainsi.

    Où se situe mon erreur de raisonnement svp ? Je suis perplexe là -_-

    Merci d'avance !

  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 242
    Points
    4 242
    Par défaut
    Je peux me tromper mais je dirais que ta sub LoadingParameters est appelée avant que ton formulaire de démarrage ne soit créé (de même pour tous les autres). Du coup, quand ton application instancie ton formulaire, les contrôles sont créés avec leurs propriétés par défaut (celles définies dans le designer).

    Ce qui fait que les textbox et autres ne sont pas masqués.

    Griftou.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Merci !

    En fait, c'était plus que bête (je savais que j'aurais dû attendre de revenir manger avant de poster, j'ai toujours les idées plus claires après le repas) :
    Je n'actualisais pas mon dictionnaire avant de faire le load...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
               Public Sub LoadingParameters()
     CollBool.Clear()
            CollBool.Add(1, My.Settings.CBCobb1)
            CollBool.Add(2, My.Settings.CBRotation1)
            CollBool.Add(3, My.Settings.CBCobb2)
            CollBool.Add(4, My.Settings.CBRotation2)
            CollBool.Add(5, My.Settings.CBCobb3)
            CollBool.Add(6, My.Settings.CBRotation3)
            CollBool.Add(7, My.Settings.CBCyphose1)
            CollBool.Add(8, My.Settings.CBCyphose2)
            CollBool.Add(9, My.Settings.CBLordose1)
            CollBool.Add(10, My.Settings.CBLordose2)
            CollBool.Add(11, My.Settings.CBInciPelv)
            CollBool.Add(12, My.Settings.CBPenteSacree)
            CollBool.Add(13, My.Settings.CBVersionPelv)
            CollBool.Add(14, My.Settings.CBObliquite)
            CollBool.Add(15, My.Settings.CBRotationB)
            CollBool.Add(16, My.Settings.CBSacral)
            CollBool.Add(17, My.Settings.CBBascule)
            CollBool.Add(18, My.Settings.CBBasculeT)
     
            For i As Integer = 1 To CollBool.Count
                If CollBool.Item(i) = False Then
                    CollTB1.Item(i).Hide()
                    CollTB2.Item(i).Hide()
                    CollTB3.Item(i).Hide()
                    CollR1.Item(i).Hide()
                    CollR2.Item(i).Hide()
                    CollOLabel.Item(i).Hide()
                    CollRLabel.Item(i).Hide()
                ElseIf CollBool.Item(i) = True Then
                    CollTB1.Item(i).Show()
                    CollTB2.Item(i).Show()
                    CollTB3.Item(i).Show()
                    CollR1.Item(i).Show()
                    CollR2.Item(i).Show()
                    CollOLabel.Item(i).Show()
                    CollRLabel.Item(i).Show()
                End If
            Next
    et le problème est réglé...

  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 242
    Points
    4 242
    Par défaut
    Du moment que ça fonctionne, tant mieux.

    Par contre, pour ma culture personnelle, j'aimerais comprendre.

    Tu remplis tes dictionnaires au startup de l'application. C'est donc ce qui fait en premier (ou presque) et ça ne se fait qu'une seule fois. Du coup, l'utilité du clear m'échappe même si je suis d'accord qu'il vaut mieux toujours initialisé la variable proprement. Mais je trouve encore plus étrange que ce soit cela qui résolve ton problème.

    Bref, tu peux m'éclairer ? ^^

    Griftou.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    En fait, j'ai des dictionnaires contenant des checkbox, des textbox, des labels, etc...

    Ces dictionnaires là sont statiques, je n'y touche jamais pendant le runtime. Il n'y en a qu'un qui change, c'est celui contenant des settings booléens.

    En revanche, ce que je veux c'est afficher tel textbox, tel label ou tel checkbox en fonction des choix de l'utilisateur. J'ai donc une fenêtre dans laquelle il coche les paramètres qu'il veut afficher.

    Lorsqu'il valide, les paramètres qu'il a choisi sont enregistrés dans des settings, puis l'affichage est actualisé en fonction de ces choix : je dois donc "refresh" le dictionnaire contenant les settings pour que l'affichage se fasse en conséquence.

    Je ne sais pas trop si j'ai été clair, n'hésite pas à me demander si tu n'as pas suivi. Et si ma méthode te semble stupide et qu'il existe plus simple (je suis débutant !) merci également de me faire signe :p

  6. #6
    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 242
    Points
    4 242
    Par défaut
    Citation Envoyé par TheYggdrazil Voir le message
    En fait, j'ai des dictionnaires contenant des checkbox, des textbox, des labels, etc...

    Ces dictionnaires là sont statiques, je n'y touche jamais pendant le runtime. Il n'y en a qu'un qui change, c'est celui contenant des settings booléens.

    En revanche, ce que je veux c'est afficher tel textbox, tel label ou tel checkbox en fonction des choix de l'utilisateur. J'ai donc une fenêtre dans laquelle il coche les paramètres qu'il veut afficher.

    Lorsqu'il valide, les paramètres qu'il a choisi sont enregistrés dans des settings, puis l'affichage est actualisé en fonction de ces choix : je dois donc "refresh" le dictionnaire contenant les settings pour que l'affichage se fasse en conséquence.

    Je ne sais pas trop si j'ai été clair, n'hésite pas à me demander si tu n'as pas suivi. Et si ma méthode te semble stupide et qu'il existe plus simple (je suis débutant !) merci également de me faire signe :p
    Oui je crois que je comprends (j'avais zappé une étape).

    Sinon, loin de moi l'idée que ta méthode soit stupide. Par contre, je ne doute pas qu'il doit probablement y avoir plus simple. Mais je n'ai jamais eu ce besoin et n'ai donc jamais réfléchi à la question.

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

Discussions similaires

  1. Comment faire plus simple ?
    Par the_lord_sith dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 04/04/2013, 09h20
  2. Procédure stockée : comment faire plus simple / plus fiable ?
    Par allaume dans le forum Accès aux données
    Réponses: 1
    Dernier message: 08/08/2007, 12h17
  3. [C#] Impression GDI+, OK mais comment faire plus simple ?
    Par yo2105 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 29/12/2006, 20h29
  4. Comment faire plus simple
    Par siaoly dans le forum Langage
    Réponses: 5
    Dernier message: 11/06/2006, 22h56
  5. Comment faire plus simple
    Par mobscene dans le forum Langage
    Réponses: 5
    Dernier message: 26/07/2005, 04h12

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