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

Я имею контроль с внутренним TextBox. Я хочу сделать непосредственную связь между текстовым свойством UserControl и текстовым свойством TextBox. Первая вещь, которую я понял, состоит в том, что текст не отображался в Свойствах UserControl. Затем я добавил Доступный для просмотра (истинный) атрибут.

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

    set
    {
        m_textBox.Text = value;
    }
}

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

25
задан yeyeyerman 21 May 2010 в 11:07
поделиться

3 ответа

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

[EditorBrowsable(EditorBrowsableState.Always)]
[Browsable(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[Bindable(true)]
public override string Text { get; set; }
45
ответ дан 28 November 2019 в 18:27
поделиться

Рефлектор - важнейший инструмент для .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?

15
ответ дан 28 November 2019 в 18:27
поделиться

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

[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
0
ответ дан 28 November 2019 в 18:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: