Bonjour,
Petite question qui a probablement une réponse simple.
Je dérive un control Label, mais je veux que la propriété Text soit "" par défaut.
Or, le designer ajoute ceci automatiquement :
Résultat, je me retrouve avec une propriété Text qui est égale au nom du contrôle par défaut, au lieu d'un texte vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 this.bgLed1.Name = "bgLed1"; this.bgLed1.Text = "bgLed1";
J'ai trouvé comme unique solution de détecter dans ma propriété "Text" : si valeur = nom du contrôle, remplacer par "", ce qui rend inopérationnel la ligne en question du designer :
Mais bon, ce n'est pas du tout élégant.
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 [Browsable(true)] // apparaît en mode designer [Description("Texte contenu dans la Led")] // info pour l'éditeur [DefaultValue("")] // valeur par défaut public override string Text { get { return base.Text; } // retourne le texte de la led set { string val = value; if (value == base.Name) // Neutralise la ligne du designer val = ""; if (val == string.Empty) // si on demande un texte null base.AutoSize = false; // annuler l'autosize base.Text = val; // affecter le nouveau texte } }
Je souhaiterai savoir comment bloquer l'ajout de la ligne par le designer, et surtout savoir où il va chercher l'info qu'il doit ajouter cette ligne (pour éventuellement pouvoir forcer le designer à ajouter d'autres lignes spécifiques).
Ou, dit autrement, qu'est-ce qui force le designer à écrire ces lignes :
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 // // bgLed1 // this.bgLed1.BorderStyle = System.Windows.Forms.BorderStyle.None; this.bgLed1.Duration = 0; this.bgLed1.Location = new System.Drawing.Point(78, 40); this.bgLed1.Name = "bgLed1"; this.bgLed1.Size = new System.Drawing.Size(100, 23); this.bgLed1.TabIndex = 0; this.bgLed1.Text = "bgLed1";
Claude
Partager