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 :

Check box en mémoire


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2008
    Messages : 150
    Points : 89
    Points
    89
    Par défaut Check box en mémoire
    Bonjour!!

    Je suis en train de développer un petit soft qui se présente comme ceci:
    -une winform avec une liste de check box, et un bouton OK.
    -un bouton ok

    quand une check box est cochée, et que l'on clique sur ok, le nom d'un dossier est changé dans le dossier racine d'un jeu, puis me.close
    Je voudrais que lors de l'ouverture suivante du soft, il y ait une mémoire de ce que j'ai fait lors de la session précédente, mais le soft s'ouvre par défaut avec toutes les check box décochées....

    Auriez vous une idée??

    Merci d'avance!

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    utilise les paramètres d'application (My.Settings)

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    il y a rien d'automatique, et visual studio ne peut pas deviner ce qu'on veut faire

    pour quelquechose soit pareil à l'execution prochaine, il faut simplement enregistrer quelque part l'état et taper du code pour relire cet état et le remettre visuellement par rapport à ce qui est enregistré

    pour enregistrer des données il y a plusieurs possibilités : fichier (ini xml ou autre), base de données, ou tout simplement les settings comme le suggère tomlev (à utiliser en tant qu'utilisateur pour qu'ils soient modifiables)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2008
    Messages : 150
    Points : 89
    Points
    89
    Par défaut ini ou settings?
    Lequel est le plus fiable et le plus simple à coder?
    A chaque ouverture du soft, l'utilisateur changera les cases alors le ini sera de plus en plus volumineux?

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    le plus simple doit etre les settings, c'est un genre de ini codé par microsoft ...
    enfin y a des gens qui ont du mal avec et viennent demander ici comment ca s'utilise

    ini, ca peut prendre que quelques lignes à coder

    t'inquiete pas pour le volume, que ca soit ini ou settings, tu doit pouvoir faire une bonne centaine de variables sans que ca dérange
    enfin si t'en as beaucoup, faudrait voir si ca serait pas mieux d'agencer ca dans un fichier xml ou une petite base de données
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2008
    Messages : 150
    Points : 89
    Points
    89
    Par défaut
    donc, j'ai ma liste de choeckbox, je coche ce que je veux, je fait ok, et la les changements sont fait, et mis en mémoire avec les settings?(dans ce cas ca marche avec le OK

    Ou il faut que j'intègre dans chaque checkbox un bout de code?

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    si tu fais un fichier ini
    il faut marquer le nom des textbox et la valeur sur une ligne pour chaque, et en plus gérer le code qui écrit et lit le fichier (certes simple)

    les settings t'évitent de gérer la lecture et l'écriture, et font que les paramètres sont sauvegardés par utilisateurs windows
    mais il reste quand meme à écrire le code qui fait la synchronisation, les settings il faut que tu les créés un par un que tu leurs donne un nom, un type (booléen à priori pour checkbox)

    personnellement je ferais peut etre un fichier ini, car il est possible de faire un code générique, et que si on rajoute un checkbox une semaine après, il n'y ai qu'une ligne à rajouter à un seul endroit


    dans tous les cas il faut lire les valeurs quelque part, les assigner à chaque checkbox, et à la fermeture de la fenetre ou de l'appli faire l'inverse, dire que chaque variable faut chaque checkbox


    avec une base de données et quelques bindings, il doit y avoir beaucoup moins de lignes de code
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2008
    Messages : 150
    Points : 89
    Points
    89
    Par défaut
    Ok pour le ini dans ce cas.
    Voici la tête de mon petit soft en pièce jointe, et voici le but de mes checkbox.

    'Dim OldName, NewName As String

    'OldName = "C:\-Vuesexternesseules"
    'NewName = "C:\Vuesexternesseules"

    'Rename(OldName, NewName)

    Le - me sert à activer des mods dans un jeu video.
    C'est possible d'avoir un semblant d'explication pour utiliser le ini, comme je débute dans VB, je n'ai pas encore utilisé l'accès à des données externes.

    Sinon, c'est quoi le mieux:
    -activer le - en temps réel quand on coche?
    -activer tout d'un coup quand on clique sur moder?

    merci de vos conseils!!
    Images attachées Images attachées  

  9. #9
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    dans system.io il y a tout ce qu'il fout pour ouvrir un fichier lire ou écrire dedans et le refermer
    il doit y avoir de nombreux exemple sur ce forum


    ensuite il suffit de faire une sub qui applique les paramètres du fichier et une qui enregistre le fichier à partir de l'état des checkbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    dim str
    for each ctrl as control in me.controls
      if not typeof ctrl is checkbox then continue for
      dim chk as checkbox = directcast(ctrl,checkbox)
      str &= chk.name & "=" & chk.checked & vbcrlf
    next
    avec ce code tu peux faire le tour de tous les checkbox de ta fenetre et faire un string qui ressemble à ca :
    checkboxmachin=1
    checkboxdibule=0
    (je sais pas si ca fait 1/0 ou true/false, m'enfin y a moyen de trouver ce qui faut pour avoir l'un ou l'autre)

    ensuite pour lire le fichier tu peux utiliser split avec "=" sur chaque ligne
    tu auras 2 string normalement, un avec le nom et un avec la valeur
    puis dans une boucle tu peux faire
    directcast(me.controls(strnom),checkbox).checked = boolean.tryparse(strvalue)

    j'ai pas détaillé tout et pas la gestion des fichiers mais normalement en une 20aine de lignes tu peux coder les 2 sens
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2008
    Messages : 150
    Points : 89
    Points
    89
    Par défaut
    Je sais que c'est mal mais je n'ai rien comprid du tout....

    .
    checkboxmachin=1
    checkboxdibule=0
    ce truc il faut que l'intègre dans le code que tu m'as montré?

    Et le code il faut que je l'intègre dans le bouton ou dans chaque checkbox?

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2008
    Messages : 150
    Points : 89
    Points
    89
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim OldName, NewName As String
     
    If CheckBox1.Checked Then
               OldName = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\-Vuesexternesseules"
            NewName = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\Vuesexternesseules"
     
            Else
                OldName = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\Vuesexternesseules"
            NewName = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\-Vuesexternesseules"
     
            End If
     
       Rename(OldName, NewName)
    Mais si le chemin d'accès au répertoire n'est pas le même que le mien ca ne va pas fonctionner.....
    Y a t il une fonction qui me permet (en load), de rechercher ce répertoire?

  12. #12
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2008
    Messages : 150
    Points : 89
    Points
    89
    Par défaut
    J'ai un autre problème: Quand j'ai plusieurs cases à cocher, ca ne fonctionne pas...
    Voici le code
    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
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Moder.Click
            Dim OldName, NewName As String
            'condition 1 : si la case est cochée
            If CheckBox1.Checked Then
                OldName = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\-Vuesexternesseules"
                NewName = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\Vuesexternesseules"
                'condition 2 : si la case est décochée
            Else
                OldName = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\Vuesexternesseules"
                NewName = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\-Vuesexternesseules"
     
            End If
     
            Rename(OldName, NewName)
     
            If CheckBox2.Checked Then
                OldName = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\-VuesexternesETvisimoyenne"
                NewName = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\VuesexternesETvisimoyenne"
            Else
                OldName = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\Vuesexternesseules"
                NewName = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\-Vuesexternesseules"
            End If
            'applique les changements voulu dans les dossiers
            Rename(OldName, NewName)
            'ferme le soft
            Me.Close()
        End Sub
    End Class
    Il me met une erreur à Rename(OldName, NewName) l'exeption file no found n'a pas été gérée

  13. #13
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    bon, j'avais mal compris ton problème
    mais le principe de fond reste le même

    si je comprends bien, selon si une case est cochée ou non, un fichier a tel nom ou pas

    donc quand je dis que d'une execution à l'autre, il faut enregistrer quelque part pour relire ensuite l'état, c'est deja tout fait

    sur le check, tu renomme, et quand tu rouvres, tu regarde s'il y a un "-" au début du fichier
    donc pas besoin de fichier ini, de settings ou autre !!


    si tu veux factoriser le code, tu peux faire une seule sub et coder sur chaque checkbox le fichier qui lui est attribué (dans la propriété Tag par exmple qui sert à entreposer une valeur sans se poser trop de questions)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  14. #14
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2008
    Messages : 150
    Points : 89
    Points
    89
    Par défaut
    Merci!!!

    J'avais pensé à un truc de ce genre mais je pensait que c'était archaïque:

    Ouverture du soft donc en LOAD je met une vérification du nom de fichier:
    si le - est présent la case est décochée, et inversement

    En fait il y a plus simple: utiliser trycatch, comme ca pas besoin ni de vérifier la présence de cases cochées, et le nom est systématiquement changé, même si c'est le même. Voici le code pour ceux que ca intéresse.

    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
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim OldName, NewName As String
            Dim Ancien, Nouveau As String
            'condition 1 : si la case est cochée 
            Try
                If CheckBox1.Checked Then
                    OldName = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\-Vuesexternesseules"
                    NewName = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\Vuesexternesseules"
                    Rename(OldName, NewName)
                    'condition 2 : si la case est décochée 
                Else
                    OldName = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\Vuesexternesseules"
                    NewName = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\-Vuesexternesseules"
                    Rename(OldName, NewName)
                End If
                'Si exception on s'en fout coches ce qu'on te dis connard de log
            Catch ex As Exception
     
            End Try
     
            Try
                If CheckBox2.Checked Then
                    Ancien = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\-VuesexternesETvisimoyenne"
                    Nouveau = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\VuesexternesETvisimoyenne"
                    Rename(Ancien, Nouveau)
                Else
                    Ancien = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\VuesexternesETvisimoyenne"
                    Nouveau = "C:\Program Files\Ubisoft\IL-2 Sturmovik 1946\MODS\-VuesexternesETvisimoyenne"
                    Rename(Ancien, Nouveau)
                End If
                'Si exception on s'en fout coches ce qu'on te dis connard de log
            Catch ex As Exception
     
            End Try
            Me.Close()
        End Sub

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

Discussions similaires

  1. check box pour afficher autre chose
    Par vincent1412 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/02/2006, 17h47
  2. [Javascript] probleme de check box
    Par stomerfull dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/02/2006, 07h09
  3. eVC++ 4 : check box transparente
    Par zenetcalme dans le forum MFC
    Réponses: 10
    Dernier message: 29/11/2005, 09h11
  4. cocher tout les check box
    Par Flob dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 17/02/2005, 10h29
  5. [FLASH 5] check box sous Flash 5
    Par Flash5man dans le forum Flash
    Réponses: 7
    Dernier message: 01/09/2004, 08h48

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