Я имею контроль с внутренним TextBox. Я хочу сделать непосредственную связь между текстовым свойством UserControl и текстовым свойством TextBox. Первая вещь, которую я понял, состоит в том, что текст не отображался в Свойствах UserControl. Затем я добавил Доступный для просмотра (истинный) атрибут.
[Browsable(true)]
public override string Text
{
get
{
return m_textBox.Text;
}
set
{
m_textBox.Text = value;
}
}
Теперь, текст покажут некоторое время, но затем удаляют. Это вызвано тем, что информация не записана автоматически в xxxx.Designer.cs
файл. Как этот behviour может быть изменен?
Вам нужно больше атрибутов:
[EditorBrowsable(EditorBrowsableState.Always)]
[Browsable(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[Bindable(true)]
public override string Text { get; set; }
Рефлектор - важнейший инструмент для .NET-разработчика. Сразу становится очевидным, что вам нужно делать, когда вы используете его для просмотра свойства UserControl.Text:
[Bindable(false), EditorBrowsable(EditorBrowsableState.Never), Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public override string Text
{
get
{
return base.Text;
}
set
{
base.Text = value;
}
}
Хо показал вам, что вам нужно сделать, чтобы отменить эти атрибуты, жаль, что он не показал вам, как он узнал . Reflector is был бесплатным, загрузите его с redgate.com или проверьте альтернативы здесь: Something Better than .NET Reflector?
Для сериализации в InitializeComponent ()
все, что вам нужно, это DesignerSerializationVisibilityAttribute :
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]