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

Visual Studio Discussion :

Sauvegarde de données lors d'un changement d'écran [Débutant]


Sujet :

Visual Studio

  1. #1
    Membre du Club
    Homme Profil pro
    Stagiaire THALES
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Stagiaire THALES
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Points : 48
    Points
    48
    Par défaut Sauvegarde de données lors d'un changement d'écran
    Bonjour à tous,

    J'ai un petit soucis sur le projet que je suis en train de réaliser. Pour faire court et clair, j'utilise SKETCH FLOW, qui me permet de faire une interface sur plusieurs écrans (Du type : Accueil --> Panneau de configuration --> réglages --> Conclusion).
    Les écrans communiquent entre eux bien sûre, c'est à dire qu'en créant un contrôle, je peux passer d'un écran à l'autre.
    C'est par ici que se situe mon problème, lorsque je passe d'un écran à l'autre, les valeurs que j'avais entré dans les champs adéquats de l'écran précédent, sont ré-initialisées.

    J'ai pensé à faire un Binding sur les champs qui m’intéressent (TextBox), seulement il faut savoir que la valeur de la TextBox est déjà Bindée, en effet elle prend la valeur d'un Slider, et quand avec les outils logiciel je tente de crée une donné via le DataStore et de l'insérer, ça écrase le Binding lié au Slider est la TexBox m'affiche '0' (quelque soit la position du Slider) ...
    Je pense que l'opération peut être réaliser en C#, seulement je ne suis pas encore assez bon en C#...
    Ou sinon, peut-on faire un second Binding ? Si oui comment ?

    Pouvez-vous m'aider ? Merci d'avance !

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    est-ce que tu pourrais me montrer ton code ?
    J'ai bien une idée en tête mais sans savoir précisément ce que tu fais c'est pas dit qu'elle convienne, surtout sans connaitre "Sketch Flow" (wizard ?) ni "DataStore" (static class ?).
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Membre du Club
    Homme Profil pro
    Stagiaire THALES
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Stagiaire THALES
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Salut,

    est-ce que tu pourrais me montrer ton code ?.
    C'est le même principe que dans mes posts précédents en gros : Un Slider qui modifie la propriété d'un objet (RenderTransform), et dans le cas de la translation par exemple, je lie une TextBox au Slider en "TwoWay" pour voir modifier la valeur du Slider par la TextBox ou l'inverse. Pour lier la TextBox je ne code pas en C#, j'utilise la "Liaison de propriété d'élément" sur le Slider, ce qui fait qu'elle m'affiche la valeur de la position du Slider.
    Même si mon programme à beaucoup évolué depuis, si j'arrive à le faire pour cet exemple, je devrais pourvoir le faire pour le reste.
    Le seul code en C# c'est pour changer la propriété de l'objet (Si je reprend l'exemple de la translation) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      private void SLID_1_ValueChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<double> e)
    		{
    			TranslateTransform myDistance = new TranslateTransform(0, -e.NewValue);
                            this.RECT_1.RenderTransform = myDistance;
                    }
    Citation Envoyé par jopopmk Voir le message
    J'ai bien une idée en tête mais sans savoir précisément ce que tu fais c'est pas dit qu'elle convienne, surtout sans connaitre "Sketch Flow" (wizard ?) ni "DataStore" (static class ?)
    C'est une variante de Blend en fait. C'est a dire que tout est pareil, seulement au lieux avoir un seul écran sur lequel tu composes, tu peux en créer plusieurs et les faire interagir. Seulement chaque écran à sa page de code C# !
    Le DataStore permet de crée des données et de les affecter à des éléments. (Ce qui correspond à une "public class" sauf que je ne code rien, ça doit générer un code derrière surement)
    Nom : Capture.PNG
Affichages : 132
Taille : 43,9 Ko

    C'est pourquoi je voudrais Bindé ma TextBox pour que lorsque je change d'écran et qu'en suite je reviens au premier, les valeurs entrées soit sauvegardés (Actuellement à chaque changement d'écran, les valeurs sont ré-initialisées).
    Seulement cette liaison entre le Slider et la TextBox entraine un Binding, et d'après les nombreuses tentatives que j'ai faites, on ne peut Bindé qu'une fois le même élément...
    Après réflexion je me demande si lier la TextBox au Slider en C#, et ensuite Binder la TextBox avec le DataStore ne marcherait pas...

  4. #4
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Là de suite je te promets rien, mais si j'ai du temps dans la journée je regarde ça
    Plus je connais de langages, plus j'aime le C.

  5. #5
    Membre du Club
    Homme Profil pro
    Stagiaire THALES
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Stagiaire THALES
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Là de suite je te promets rien, mais si j'ai du temps dans la journée je regarde ça
    Ça marche, merci beaucoup !

    PS :

    J'ai essayé un truc, je mets un Binding via le DataStore sur la TextBox de "l'écran 1", et la... Magie, en passant d'un écran à l'autre ça fonctionne (Ça parait donc pouvoir fonctionner avec cette solution).
    Mais finalement je suis toujours bai***, j'ai ensuite crée un Slider que je fais communiquer avec la TextBox, seulement j'arrive à le faire que dans un seul sens "OneWay", j'ai essayer de le faire en "TwoWay" mais là, le panneau de résultat devient rouge (), toujours le même problème (c'est mon patois en C# qu'il n'aime pas trop je pense )

    Voila le code que j'ai testé pour que la TextBox affiche la valeur du Slider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void SLID_1_ValueChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<double> e)
    {
              double Valeur_Slider;
     
              Valeur_Slider  =   e.NewValue;
              this.TextBox.Text  =  Valeur_Slider.ToString();
    }
    Ce bout de code marche (), mais j'aimerais voir si en rajoutant le procédé inverse (C'est a dire que quand je rentre dans la TextBox, la valeur du Slider change selon l'entrée) si la valeur est toujours sauvegarder en passant d'un écran à l'autre...

    Le bout de code que j'ai essayé est le suivant (Il ne marche pas du tout mais bon... Ça pourrait de donner des idées... (Ou de l'urticaire ))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void SLID_1_ValueChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<double> e)
    {
              double Valeur_TextBox;
     
              Valeur_TextBox=   e.NewValue;
              this.SLIDER.Value=  Valeur_TextBox.ToString();
    }
    Encore merci !

  6. #6
    Membre du Club
    Homme Profil pro
    Stagiaire THALES
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Stagiaire THALES
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Points : 48
    Points
    48
    Par défaut
    Salut,

    Raaah j'avais trouvé un truc qui semblait marcher, la donné se sauvegarde bien quand je change d'écran, seulement une fois que je veux revenir à l'écran ou j'ai entré la valeur, un message d'erreur s'affiche :

    Nom : Capture_erreur.PNG
Affichages : 182
Taille : 15,4 Ko

    Voila ce que j'ai fais :
    • Je crée une donnée dans la DataStore "D" par exemple
    • Je supprime tous le Binding entre la TextBox et le Slider
    • Je Bind la TextBox et le Slider avec "D" (La donnée peu être Bindée à plusieurs élément) : Comme ça quand la Valeur du Slider change, elle est stocké dans "D" et comme "D" est Bindée à la TextBox...

    J'ai pensé que cette solution marcherait, donc quand je compile, ça fonctionne, mais impossible de revenir à l'écran ou la valeur à été rentrée sans crasher l'application.

  7. #7
    Membre du Club
    Homme Profil pro
    Stagiaire THALES
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Stagiaire THALES
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Points : 48
    Points
    48
    Par défaut
    Bonjour,

    J'ai fait une petite avancé... Ce n'est pas non plus énorme, mais on arrive à peu prêt à ce que je veux !

    Dans la méthode du Slider ("private void") je code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.TextBox.Text = e.NewValue.ToString();
    Avec ça la valeur du Slider est affichée dans la TextBox, et avec le DataStore, je Bind la TextBox à une donnée "D" que je crée.

    Voila, en faisant cela, la valeur de la TextBox reste intacte si je change d'écran, mais à une condition : Une fois que j'ai bougé le Slider je dois cliquer dans la TextBox, avant de changer d'écran... (Pourquoi ? je sais pas du tout... )
    Le soucis de cette technique c'est qu'une fois que je reviens, ok la valeur de la TextBox est inchangée, mais le Slider est à 0 est le carré est à son Origine de départ.

    Peu être qu'en faisant un système "TwoWay" en C# ça réglerai le problème de la réinitialisation du carré et du Slider ?
    Du coup j'ai essayer de coder ce "TwoWay" en C# (sauf que ça n'a pas bien marché) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    private void TB_1_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
    		{
    			string TextBoxValue;
    			double Distance;
     
    			TextBoxValue = e.ToString();
    			Distance = Convert.ToDouble(TextBoxValue);
    			this.SLIDER.Value = Distance;
    		}
    Ça compile, mais des que je touche à la TextBox ou au Slider ça m'affiche un panneau d'erreur qui ressemble à celui posté plus haut.

    Si il y à encore du monde qui passe sur ce poste, je vous implore de m'aider... Ca fait déjà 5 jours que je coince pour un truc qui m'a l'aire plutôt basic...

    Merci d'avance !

  8. #8
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    pas moyen d'utiliser SketchFlow pour ma part, du coup je vais pas pouvoir t'aider (ou alors faudra faire sans).

    Bonne chance
    Plus je connais de langages, plus j'aime le C.

  9. #9
    Membre du Club
    Homme Profil pro
    Stagiaire THALES
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Stagiaire THALES
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Points : 48
    Points
    48
    Par défaut
    Salut !

    En fait, je viens de réussir ! Je sais pas si c'est la meilleur méthode, mais comme ça marche, je ferais comme si !

    Pour ceux que ça intéresse (ou que ça aidera), j'explique la méthode en dessous :
    • Je crée une donné que je Bind à ma TextBox
    • Je fais l'équivalent d'un TwoWay en C# (entre ma TextBox et mon Slider):
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      private void SLID_1_ValueChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<double> e)
      {
                this.TextBox.Text = e.NewValue.ToString();
      }
      private void TB_1_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
      		{
      			string TextBoxValue;
      			double Distance;
       
      			TextBoxValue = TB_1.ToString();
      			Distance = Convert.ToDouble(TextBoxValue);
      			this.SLIDER.Value = Distance;
      		}
    • Sans oublier que mon Slider est lié avec le carré en C# (pour la translation)

    Avec cette méthode la donnée se réactualise à chaque changement de valeur, puis est stocké dans la donnée crée plus haut, donc elle est sauvegardée !

    PS : Merci quand même jopopmk ! Surement à bientôt ^^

  10. #10
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Bonne nouvelle !

    Citation Envoyé par Axel_E Voir le message
    PS : Merci quand même jopopmk ! Surement à bientôt ^^
    Tu sais où me trouver
    Plus je connais de langages, plus j'aime le C.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/11/2011, 10h37
  2. Réponses: 2
    Dernier message: 12/09/2008, 09h29
  3. Réponses: 5
    Dernier message: 27/02/2006, 11h31
  4. sauvegarde des données des tables
    Par tomm dans le forum Bases de données
    Réponses: 18
    Dernier message: 27/04/2004, 21h29
  5. [Kylix] Sauvegarde de donnée utilisateur....
    Par Eclypse dans le forum EDI
    Réponses: 1
    Dernier message: 11/05/2002, 17h21

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