Conversion string en color

Résolu
cs_thebigboss Messages postés 216 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 12 avril 2017 - 11 déc. 2005 à 00:43
cs_thebigboss Messages postés 216 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 12 avril 2017 - 12 déc. 2005 à 12:04
Salut,

voilà j'aimerai sauvegarder l'apparence de mon projet dans un fichier .ini. J'y suis arrivé grace à une class récupérée sur le forum (merci).
Le probleme c'est que cette classe me retourne une string (normal) mais moi je voudrais la convertir en couleur.

J'ai essayé:
this.BackColor= file.GetValue("MainForm","BackColor");
mais j'ai bien entendu un message d'erreur:
"Cannot convert type 'string' to 'system.Drawing.Color'"

j'ai alors tenté sans succes un:
this. BackColor =(system.Drawing.Color) file.GetValue("MainForm","BackColor");
mais j'ai exactement la même erreur.

petite précision qui n'a pas la moindre importance car le probleme apparait à la compilation, mais bon dans mon fichier .ini j'ai ça:
[MainForm]
BackColor=Color [Window]
je precise cette information car je pense que je vais avoir du mal à convertir ça en couleur et pourtant j'enregistre mon .ini comme suit:

IniFile file
=new IniFile("main.ini");


file
.SetValue("MainForm","BackColor",this
.BackColor
.ToString());


file
.Save("Hexa.ini");

Merci pour toute l'aide que vous m'apporterez.

Nico
A voir également:

7 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
11 déc. 2005 à 23:39
Naturellement que si, c'est juste que j'ai oublier de répondre ce matin :p

Control sourceControl = ((MenuItem)sender).GetContextMenu().SourceControl;

/*
coq
MVP Visual C#
*/
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
11 déc. 2005 à 01:03
Salut,

Utilise Color.FromName avec le nom situé entre [] si il s'agit d'une couleur connue (voir KnownColor)

Dans le cas d'une couleur quelconque, la chaine sera de cette forme là : " Color [A=xx R=xx G=xx B=xx]"
A toi de récupérer les valeurs et d'utiliser ensuite Color.FromArgb.

/*
coq
MVP Visual C#
*/
2
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
11 déc. 2005 à 10:24
Sauf que l'utilisation de la couleur "connue" permet de suivre les évolutions du choix de l'utilisateur au niveau global, alors que si tu sauvegardes uniquement le argb tu restes sur une couleur fixe.
C'est donc une question de choix.
Enfin le mieux serait probablement de sérialiser l'instance de Color, mais dans du ini c'est pas terrible.

/*
coq
MVP Visual C#
*/
0
cs_thebigboss Messages postés 216 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 12 avril 2017 2
11 déc. 2005 à 11:50
merci pour vos reponses.
J'ai une autre question:
J'ai un menu contextuel dans lequel je peux choisir le changer la couleur d'un objet (grace à l'objet ColorDialog). Le probleme c'est que je n'arrive pas à savoir sur quel objet l'utilisateur a appelé le menu contextuel doncje ne peux pas changer la couleur de cet objet.

Je ne sais pas si c'est clair. En gros pour simplifier, disons que j'ai un TextBox et un Bouton, les deux appellent le meme menu contextuel. Dans ce menu je peux choisir de changer la couleur de backcolor. Le probleme c'est que la fonction me permet de savoir qui a généré l'appelle de cette fonction grace à "sender". Mais sender c'est toujours l'item de mon menu contextuel pas l'objet sur lequel a été appelé mon menu.
(est-ce vraiment plus clair??? pas sur).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_thebigboss Messages postés 216 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 12 avril 2017 2
11 déc. 2005 à 22:33
On dit généralement pas de nouvelle bonne nouvelle, mais dans mon cas il semblerait que la chose soit infaisable sinon je pense que j'aurai déjà eu quelques réponses...
0
cs_thebigboss Messages postés 216 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 12 avril 2017 2
12 déc. 2005 à 12:04
merci encore.
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
11 déc. 2005 à 04:03
Autant enregistrer dès le départ la valeur ARGB.

// Obtenir la valeur ARGB sous form de chaine
string s = this.BackColor.ToArgb( ).ToString( );

// Récuperer une stucture Color depuis la chaine
thisBackColor = Color.FromArgb( int32.Parse( s ) );
-1
Rejoignez-nous