自定义TextBox - Text属性不适用于构造函数

时间:2017-09-07 07:12:30

标签: c# winforms custom-controls

我创建了一个自定义文本框控件,我尝试为文本框设置默认文本。所以在我的构造函数中我说Text = "My Default Text",这似乎不会影响设计模式中的控件。

以下是自定义文本框代码:

using System.Windows.Forms;

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

然后我将该控件放在usercontrol上,没有文字:(

Control dropped

以下是我在属性框中看到的内容:Text属性为空

Properties box

2 个答案:

答案 0 :(得分:0)

此处解释了问题:Virtual member call in a constructor

总之,为了获得你想要的东西,你需要有一个密封的课程:

public sealed class xTextBox : TextBox
{
    public xTextBox()
    {
        BorderStyle = BorderStyle.None;
        Text = "My Default 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

答案 1 :(得分:0)

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

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

就是这样的。上面的代码可能有错误,因为我在我的手机上输入了它。在你有类似的东西后,在任何你想要的地方设置文本值。