繁体   English   中英

自定义控件重写文本属性默认值

[英]Custom Control Overridden Text Property Default Value

我创建了一个用户控件,里面有一个文本框。 我已经覆盖了基本控件的Text属性,如下所示:

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

现在,我遇到这个问题,我在表单中创建控件的任何实例,Text始终具有controlname + number(实例)的值。 我想知道为什么会发生这种情况,以及如何删除此默认值? 谢谢。

最初的预感是它在对象上调用ToString() 覆盖ToString()以返回所需的值。

DefaultValue属性未设置默认值。 该属性用于描述默认值。 您必须自己设置默认值,然后使用该属性来描述它。

因此,在您的示例中,必须使用控件ID填充textbox1.Text。 在您的UserControl上,在OnInit或任何适当的地方,您应该打电话

this.Text = "";
[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();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM