Proprietà di testo in un controllo utente in C #

Ho un controllo con un TextBox interno. Voglio creare una relazione diretta tra la proprietà Text di UserControl e la proprietà Text del TextBox. La prima cosa che ho capito è che il testo non veniva visualizzato nelle proprietà di UserControl. Quindi ho aggiunto l’attributo Browsable (true).

[Browsable(true)] public override string Text { get { return m_textBox.Text; } set { m_textBox.Text = value; } } 

Ora il testo verrà mostrato per un po ‘, ma poi verrà cancellato. Questo perché le informazioni non vengono scritte automaticamente nel file xxxx.Designer.cs . Come può essere cambiato questo comportamento?

Hai bisogno di più attributi:

 [EditorBrowsable(EditorBrowsableState.Always)] [Browsable(true)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] [Bindable(true)] public override string Text 

Reflector è uno strumento cruciale per uno sviluppatore .NET. È immediatamente evidente ciò che devi fare quando lo usi per esaminare la proprietà UserControl.Text:

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

Ho mostrato cosa devi fare per cancellare questi attributi, peccato che non ti abbia mostrato come l’ha scoperto. Reflector è stato gratuito, scaricalo da redgate.com o controlla le alternative qui: Qualcosa di meglio di .NET Reflector?

Per la serializzazione all’interno di InitializeComponent() , tutto ciò che serve è DesignerSerializationVisibilityAttribute :

 [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]