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

Windows Forms Discussion :

Gestion de Color après être passé dans un fichier Json


Sujet :

Windows Forms

  1. #1
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut Gestion de Color après être passé dans un fichier Json
    Bonjour,

    Je sauvegarde une Color dans un fichier Json mais je n'arrive pas à la réutiliser

    Phase 1 (qui fonctionne)
    J'ai une form qui ouvre ColorDialog.
    Je récupère la couleur sélectionnée pour le placer dans un datagridview (la valeur enregistré est un entier)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listeStatut.Rows[e.RowIndex].Cells[e.ColumnIndex+1].Value = cdialog.Color.ToArgb();
    Je coloris une cellule avec la couleur sélectionnée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listeStatut.Rows[e.RowIndex].Cells[0].Style.BackColor = Color.FromArgb(Convert.ToInt32(listeStatut.Rows[e.RowIndex].Cells[2].Value));
    Donc ça fonctionne

    Les informations sont stockés dans une variable de class Statuts qui est stocké dans une class Configuration (voir plus bas)
    Je sauvegarde mes données dans un fichier json, voici comment c'est sauvegardé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string jsonSerializedObj = JsonConvert.SerializeObject(configuration, Formatting.Indented);
    System.IO.File.WriteAllText(Application.StartupPath + @"\configuration.json", jsonSerializedObj);
    Un extrait du fichier Json
    ...
    "fond": "255, 0, 0",
    ...

    Phase 2 (qui pose problème)
    Au chargement du form (load), démarrage du programme, je charge le fichier Json dans les même class que tout à l'heure

    Quand je veux récupérer la couleur pour colorier une cellule je n'y arrive pas (écrire dans la cellule ne pose pas de problème), j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    p.listeStatut.Rows[y].Cells[2].Value = s.fond;
    p.listeStatut.Rows[y].Cells[0].Style.BackColor = Color.FromArgb(s.fond);
    Voici le texte saisis dans ma cellule : Color [A=255, R=255, G=0, B=0]
    La variable s.fond est bien une Color (il y a bien les paramètres A R G B & Name de renseignés et qui correspondent)

    Voici donc mon problème avec ColorFromName ne donne pas de bon résultat, ni avec Color.FromArgb et même sans rien mettre (directement s.font vu que c'est une Color). soit ma sauvegarde n'est pas optimisée soit ma gest pour l'affichage n'est pas bon

    Par avec merci pour votre aide



    Voici mes class que j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class Statuts
        {
            public string statut = "";
            public Color? fond = null;
            public Color? police = null;
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class Configuration
        {
            public Boolean positionRelative = false;
            public Boolean supprimeDansHistorique = true;
            public List<Statuts> lesStatuts = new List<Statuts>();
        }

  2. #2
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut
    Si je met (méthode qui me semble la plus juste vu que ma variable est de class Color
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p.listeStatut.Rows[y].Cells[0].Style.BackColor = s.fond;
    voici l'erreur avant compilation que j'ai :
    Erreur CS0266 Impossible de convertir implicitement le type 'System.Drawing.Color?' en 'System.Drawing.Color'. Une conversion explicite existe (un cast est-il manquant*?)


    Avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p.listeStatut.Rows[y].Cells[0].Style.BackColor = Color.FromArgb(Convert.ToInt32(s.fond));
    voici l'erreur que j'ai en exécution :
    Message=Impossible d'effectuer un cast d'un objet de type 'System.Drawing.Color' en type 'System.IConvertible'.


    Avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p.listeStatut.Rows[y].Cells[0].Style.BackColor = Color.FromName(Convert.ToString(s.fond));
    Je n'ai pas d'erreur en soit mais la couleur n'est pas bonne


    J'y perd mon latin, m'en fout je le connais pas mais mon sang froid oui

    Y a t'il une astuce ?

    Merci

  3. #3
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut
    Je viens de trouver
    Cela vient de ma déclaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class Statuts
        {
            public string statut = "";
            public Color? fond = null;
            public Color? police = null;
        }
    Il ne faut pas mettre les "?".

    Comme ceci fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class Statuts
        {
            public string statut = "";
            public Color fond = Color.White;
            public Color police = Color.Black;
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p.listeStatut.Rows[y].Cells[0].Style.BackColor = s.fond;
    Merci

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/01/2017, 08h26
  2. Plugin plus disponible après être passé de Ganymede à Galileo
    Par joel.drigo dans le forum Eclipse Platform
    Réponses: 6
    Dernier message: 22/09/2009, 09h55
  3. sécuriser un mot de passe dans un fichier de config
    Par vegas dans le forum Sécurité
    Réponses: 5
    Dernier message: 26/10/2007, 09h31
  4. L'uri ne peut être résolu dans le fichier web.xml
    Par k-eisti dans le forum Struts 1
    Réponses: 13
    Dernier message: 29/09/2007, 15h34
  5. apache su mot de passe dans un fichier
    Par jean-jacques varvenne dans le forum Apache
    Réponses: 4
    Dernier message: 31/01/2005, 20h07

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