Logo UGIdotNET

Ridefinire la proprietà Text di uno UserControl

Chi volesse ridefinire la proprietà Text di uno UserControl si accorgerebbe che il valore assegnato in fase di design non viene assoulutamente persistito.Il problema è relativo al fatto che tale proprietà è decorata in modo che in fase di design Visual Studio la nasconda, Browsable(false), e non ne persista il valore, DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden). Sebbene la documentazione non indichi tale limitazione usando un tool di reflection - esempio Reflector - possiamo scoprire la completa decorazione (e relative limitazioni) della proprietà.

[EditorBrowsable(EditorBrowsableState.Never),
 Browsable(false),
 DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
 Bindable(false)]
public override string Text { get; set; }

Segue un esempio di UserControl in cui viene ridefinita (override) la proprietà Text e ri-decorata in modo da garantirne navigazione e persistenza anche a design.

class UserColtrol1: UserControl
{
   //...
   
   //Proprietà rimappata sulla proprietà Text della Label1 contenuta.
   [Browsable(true),
    DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
   public override string Text
   {
      get
      {
         return label1.Text;
      }
      set
      {
         label1.Text = value;
      }
   }
}

È bene ricordare che la proprietà andrebbe anche decorata - per uniformità agli standard - con gli attributi DescriptionAttribute, CategoryAttribute e DefaultValueAttribute.

Autore: Marco Barzaghi
Data: 10 luglio 2007
Ultimo aggiornamento: 10 luglio 2007
Categorie:  Windows Forms

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185