[英]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.