我创建了一个用户控件,里面有一个文本框。我已经覆盖了基本控件的Text属性,如下所示:
[Browsable(true)]
[DefaultValue("")]
[Description("Test1"), Category("Test")]
public new string Text
{
get
{
return textBox1.Text;
}
set
{
textBox1.Text= value;
}
}
现在,我遇到了这个问题,我在表单中创建控件的任何实例,Text总是有一个控件名+数字(实例)的值。我想知道为什么会发生这种情况,以及如何删除此默认值?感谢。
答案 0 :(得分:4)
初步预感是它在对象上调用ToString()
。覆盖ToString()
以返回所需的值。
答案 1 :(得分:3)
属性DefaultValue
未设置默认值。该属性用于描述默认值。您必须自己设置默认值,然后使用该属性来描述它。
因此,在您的示例中,textbox1.Text必须使用控件ID进行填充。在您的UserControl上,OnInit
或在适当的地方,您应该致电
this.Text = "";
答案 2 :(得分:2)
[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();
}
}