Conversion string en color [Résolu]

cs_thebigboss 216 Messages postés jeudi 30 janvier 2003Date d'inscription 12 avril 2017 Dernière intervention - 11 déc. 2005 à 00:43 - Dernière réponse : cs_thebigboss 216 Messages postés jeudi 30 janvier 2003Date d'inscription 12 avril 2017 Dernière intervention
- 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
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 11 déc. 2005 à 23:39
3
Merci
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#
*/

Merci cs_coq 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 125 internautes ce mois-ci

Commenter la réponse de cs_coq
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 11 déc. 2005 à 01:03
2
Merci
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#
*/
Commenter la réponse de cs_coq
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 11 déc. 2005 à 10:24
0
Merci
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#
*/
Commenter la réponse de cs_coq
cs_thebigboss 216 Messages postés jeudi 30 janvier 2003Date d'inscription 12 avril 2017 Dernière intervention - 11 déc. 2005 à 11:50
0
Merci
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).
Commenter la réponse de cs_thebigboss
cs_thebigboss 216 Messages postés jeudi 30 janvier 2003Date d'inscription 12 avril 2017 Dernière intervention - 11 déc. 2005 à 22:33
0
Merci
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...
Commenter la réponse de cs_thebigboss
cs_thebigboss 216 Messages postés jeudi 30 janvier 2003Date d'inscription 12 avril 2017 Dernière intervention - 12 déc. 2005 à 12:04
0
Merci
merci encore.
Commenter la réponse de cs_thebigboss
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 11 déc. 2005 à 04:03
-1
Merci
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 ) );
Commenter la réponse de Lutinore

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.