Lorsque vous ajoutez une étiquette au formulaire à partir de la boîte à outils, son texte utilise par défaut le nom de l'élément (label1
, label2
, etc.). Comment puis-je y arriver avec un contrôle personnalisé? Jusqu'à présent, j'ai ce qui suit, ce qui me permet de changer le texte par la fenêtre de la propriété:Comment puis-je initialiser la propriété Text au nom des objets au moment du design?
private string _text;
[BrowsableAttribute(true)]
public override string Text
{
get { return _text; }
set
{
_text = value;
lblID.Text = _text;
}
}
Apparemment, le code ci-dessus fonctionne comme il est, mais je ne sais pas pourquoi. Est-ce que Text
utilise par défaut le nom de l'objet automatiquement? La question reste valable pour les autres propriétés qui ne remplacent pas Text
.
C'est parce que vous utilisez le concepteur par défaut, qui fait cela à la propriété Text. Presque tous les contrôles utilisent le concepteur par défaut (ou une sous-classe de celui-ci). Si vous désassemblez la classe Label, vous verrez en haut: 'Designer (" System.Windows.Forms.Design.LabelDesigner, System.Design, Version = 2.0.0.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a ")', LabelDesigner classe sous-classes 'ControlDesigner', c'est ControlDesigner qui fonctionne avec la propriété Text. –