Пользовательский элемент управления Переопределенный текст Свойство Значение по умолчанию - PullRequest
5 голосов
/ 21 января 2011

Я создал пользовательский элемент управления, в котором есть текстовое поле.Я переопределил свойство Text базового элемента управления, как показано ниже:

    [Browsable(true)]
    [DefaultValue("")]
    [Description("Test1"), Category("Test")]
    public new string Text
    {
        get
        {
            return textBox1.Text;
        }
        set
        {
            textBox1.Text= value;
        }
    }

Теперь у меня возникла проблема, когда при создании экземпляров элемента управления в форме, текст всегда имеет значениеимя элемента управления + номер (экземпляра).Я хочу знать, почему это происходит, и как удалить это значение по умолчанию?Спасибо.

Ответы [ 3 ]

4 голосов
/ 21 января 2011

Первоначальная догадка заключается в том, что он вызывает ToString() для объекта. Переопределите ToString(), чтобы вернуть желаемое значение.

3 голосов
/ 22 января 2011

Атрибут DefaultValue не устанавливает значение по умолчанию.Атрибут предназначен для описания значения по умолчанию.Вы должны установить значение по умолчанию самостоятельно, а затем использовать атрибут для его описания.

Так что в вашем примере textbox1.Text должен быть заполнен идентификатором элемента управления.На вашем UserControl, в OnInit или, где это уместно, вы должны позвонить

this.Text = "";
2 голосов
/ 30 октября 2015
[DefaultValue("")]
public override string Text
{
    get { return base.Text; }
    set
    {
        if (this.DesignMode && (Environment.StackTrace.Contains("System.Windows.Forms.Design.ControlDesigner.InitializeNewComponent")))
            return;
        base.Text = value; 
        Invalidate();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...