Подтвердить что ты не робот

Текстовое свойство в UserControl в С#

У меня есть элемент управления с внутренним TextBox. Я хочу установить прямую связь между свойством Text свойства UserControl и Text для TextBox. Первое, что я понял, это то, что текст не отображается в свойствах UserControl. Затем я добавил атрибут Browsable (true).

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

    set
    {
        m_textBox.Text = value;
    }
}

Теперь текст будет показываться некоторое время, но затем будет удален. Это связано с тем, что информация не записывается автоматически в файл xxxx.Designer.cs. Как можно изменить это поведение?

4b9b3361

Ответ 1

Вам нужно больше атрибутов:

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

Ответ 2

Отражатель - это важный инструмент для .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 или проверьте альтернативы здесь: Что-то лучше, чем .NET Reflector?

Ответ 3

Для сериализации в InitializeComponent() все, что вам нужно, это DesignerSerializationVisibilityAttribute:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]