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.
Il faut donc trouver un moyen de récupérer une couleur grâce à son nom.
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; } } } } } }
Ou si vous avez d'autres solutions...
Merci d'avance
Partager