Bonjour à tous,
Voilà je suis en train de développer une bibliothéque de contrôles personnalisés pour mon appli, j'ai donc un TextBoxCustom qui hérite de TextBox, une ComboBoxCustom qui hérite de ComboBox, etc...
Mais chaque contrôle custom à une propriété commune: le mode de saisie que je définis dans une structure:
Suivant le mode de saisie choisi, la backColor du contrôle doit changer.
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 public static class Enums { /// <summary> /// Enumération contenant la liste des modes de saisies des contrôles Custom /// </summary> public enum ControlCaptureMode { /// <summary> /// Saisie obligatoire /// </summary> Compulsory, /// <summary> /// Saisie facultative /// </summary> Optional, /// <summary> /// Saisie bloqué /// </summary> Locked, } }
Puisque c'est un comportement commun à tous mes contrôles custom, j'ai créé une classe dans laquelle seront traités les comportements communs, dont le mode d'affichage:
Puis dans chacun des mes contrôles custom j'ai mis une propriété permettant de manipuler un objet de cette classe ControlCustom:
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
47
48
49
50
51
52 public class ControlCustom : Control { #region Members private Enums.ControlCaptureMode _captureMode; #endregion #region Properties public Enums.ControlCaptureMode CaptureMode { get { return this._captureMode; } set { this._captureMode = value; SetCaptureMode(); } } #endregion #region Methodes private void SetCaptureMode() { switch (_captureMode) { case Enums.ControlCaptureMode.Compulsory: this.BackColor = Color.PaleTurquoise; this.Enabled = true; break; case Enums.ControlCaptureMode.Locked: this.BackColor = Color.LemonChiffon; this.Enabled = false; break; case Enums.ControlCaptureMode.Optional: default: this.BackColor = Color.White; this.Enabled = true; break; } } #endregion }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 [ToolboxBitmap(typeof(TextboxCustom), "favicon.ico")] public class TextboxCustom : TextBox { public ControlCustom ControlCustom { get; set; } }
Le soucis est que je vois bien ma propriété ControlCustom dans le designer quand j'édite ma TextboxCustom, mais je souhaiterai avoir accés aux valeurs de l'énumération directement dans le designer depuis cet attribut ControlCustom (un peu de la même manière que padding par exemple pour une form avec un petit + qui déroule les autres attributs), alors que tout ce que j'ai pour le moment c'est un (none)...
Si vous auriez une idée de comment faire ce serait super, Merci!
Partager