Bonjour,

Dans une de met table j'ai :

Objet_Id | Action_Id | Action_Type | Valeur
int | int | string | string
Exemple :

Label1 | BackColor | color | Red

Label2 | BackColor | color | ff4380bc

Je remplie le champ Valeur avec une ColorDialog().

Ensuite je me sers de cette Table pour modifier les propriétés des controls.

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
37
38
39
40
41
42
43
44
45
46
// Nom du control , Nom de la property , Valeur , type
private void AffSecuriteMenu(string oControl, string oProperty, string Valeur, string VType)
        {
            foreach (Control control in this.Controls)
            {
                if (control.Name == Barre_Menu.Name)
                {
                    foreach (ToolStripItem TSI in Barre_Menu.Items)
                    {
                        if (TSI.Name == oControl)
                        {

                            System.Type ControlType = TSI.GetType();
                            PropertyInfo pi = ControlType.GetProperty(oProperty);

                            switch (VType)
                            {
                                case "bool":
                                    pi.SetValue(TSI, Convert.ToBoolean(Valeur), null);
                                    break;

                                case "color": // Si c'est une couleur
//Soit elle est au format Nom soit en héxadécimal
                                    
                                   if (!Valeur.IsNamedColor)
// Erreur pas de def pour IsNamedColor : normal car Valeur n'est pas une couleur
                                    {
// On récupere la couleur qui correspond au code héxadécimal
                                        Color cColor = ColorTranslator.FromHtml(Valeur);

                                        pi.SetValue(TSI, System.Drawing.Color.cColor, null);
// Pas de définition pour cColor
                                    }
                                    else
                                    {
                                        pi.SetValue(TSI, System.Drawing.Color.Valeur, null);
// Pas de def pour Valeur
                                    }
                                    break;
                            }
                        }
                    }
                }
            }
        }
Il faut donc trouver un moyen de récupérer une couleur grâce à son nom.

Ou si vous avez d'autres solutions...

Merci d'avance