重写Form.Text属性

时间:2012-07-02 08:45:39

标签: c# .net winforms properties

我试图覆盖Form.Text,以便在出现在表单之前修改Title

作为概念验证,我创建了这个类,它将用于代替直接继承Form

public class FormWithVersionNumber : Form
{
    [SettingsBindable(true)]
    public override string Text
    { 
        get
        {
            return "tester";
        }

    }
}

我希望从中继承的所有表单都具有标题"tester",但它始终是空白的。我经历过断点,看不出有什么理由发生这种情况。那是什么原因?

1 个答案:

答案 0 :(得分:2)

因为实际Title未从Text检索,而是从WindowText中的内部属性Control检索。

以下是您可以做的一个示例:

public partial class FormWithVersionNumber : Form
{
    public override sealed string Text
    {
        get
        {
            return base.Text + " 1.0.0.0";
        }
        set
        {
            base.Text = value + " 1.0.0.0";
        }
    }


    public FormWithVersionNumber()
    {
        InitializeComponent();

        Text = "Some Title";
    }
}