自定义文本框 - 文本属性不能在构造函数中工作

问题描述:

我已经创建了自定义文本框控件,我尝试为文本框设置默认文本。所以在它的构造函数中我说Text = "My Default Text",这似乎不影响设计模式下的控制。自定义文本框 - 文本属性不能在构造函数中工作

这是自定义文本框代码:

using System.Windows.Forms; 

namespace MyNameSpace 
{ 
    public class xTextBox : TextBox 
    { 
     public xTextBox() 
     { 
      BorderStyle = BorderStyle.None; 
      Text = "My Default Text"; 
     } 
    } 
} 

然后,我丢弃在用户控件控制,没有文字:(

Control dropped

以下是我在属性看框: Text property empty

Properties box

+0

我不认为Visual Studio的设计模式在显示它们时调用控件构造函数。 –

+0

Visual Studio调用构造函数,在我的情况下应用''BorderStyle''。我观察到它只有'''Text''属性失败 –

+0

我尝试了一个按钮自定义控件''XButton'',一旦拖放VS创建控件并将''“XButton1”''设置为文本并忽略文本I放入其构造函数中。我添加了''BackColor = Color.Yellow''这工作 –

的问题在这里解释:Virtual member call in a constructor

总之,以得到你想要的,你需要有一个密封类:

public sealed class xTextBox : TextBox 
{ 
    public xTextBox() 
    { 
     BorderStyle = BorderStyle.None; 
     Text = "My Default Text"; 
    } 
} 

或密封Text属性:

public class xTextBox : TextBox 
{ 
    public xTextBox() 
    { 
     BorderStyle = BorderStyle.None; 
     Text = "My Default Text"; 
    } 

    public sealed override string Text 
    { 
     get { return base.Text; } 
     set { base.Text = value; } 
    } 
} 

enter image description here

+0

它仍然不起作用,我认为这是一个Visual Studio的问题,我观察到如果我关闭设计器并打开''Text''出现。 –

+0

它的工作原理。在您更改控件中的某些内容后,您需要构建解决方案。 – Reniuz

+0

我这样做了,没有什么改变;我关闭了VS的解决方案,重新启动并重新构建;同样,控制文本一旦丢弃就是空的。我发现问题在于“Text”属性。请阅读我对问题的评论 –

文本需要是一个函数之外的变量。

Public string Text { 
      get { return this;} 
      set{value = this;} 
} 

所以这样的事情。上面的代码中可能存在错误,因为我在移动设备上键入了它。在你有这样的事情之后,在任何你想要的地方设置文本值。