Свойство текста в UserControl в C # - PullRequest
22 голосов
/ 21 мая 2010

У меня есть элемент управления с внутренним 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.Как изменить этот вид?

Ответы [ 3 ]

41 голосов
/ 21 мая 2010

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

[EditorBrowsable(EditorBrowsableState.Always)]
[Browsable(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[Bindable(true)]
public override string Text 
13 голосов
/ 21 мая 2010

Reflector - важный инструмент для разработчика .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?

0 голосов
/ 21 мая 2010

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

[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...