2010-06-10 7 views
0

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.

Répondre

0

Apparemment, la Text propriété est automatiquement définie sur le nom des objets lorsque vous héritez de UserControl. Le code suivant fonctionne:

public partial class CustomControl: UserControl 
{ 
    public string Extension { get; set; } 

    private string _text; 

    [BrowsableAttribute(true)] // Initializes to "customControlN" 
    public override string Text 
    { 
     get { return _text; } 
     set { _text = value; } 
    } 
} 
+1

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. –

0
private string _text = "default value" 
0

Regardez dans System.ComponentModel.DefaultValueAttribute

+1

La capacité de Label à faire "label1", "label2" est gérée par son concepteur. Vous pouvez obtenir des informations à ce sujet ici: http://support.microsoft.com/kb/813808 –

Questions connexes