1

我有一些自定义 TreenodeTypes 我想用自定义值填充。它们看起来像这样:

public class QuestionNode : TreeNode
{
    public string Question { get; set; }
    public new string Text
    {
        get { return string.Format("Question: {0}", Question); }
    }
}

当我将此节点添加到树视图“trvWhatever”时:

trvWhatever.Nodes.Add(new QuestionNode { Question="WTF?"});

节点仍然不可见。树视图包含节点,但“文本”-属性仍然为空。

我了解使用基本属性而不是“我的”属性。有没有办法改变它?

4

1 回答 1

1

我了解使用基本属性而不是“我的”属性。有没有办法改变它?

不是真的。问题是它不是一个虚拟属性,而你刚刚引入了一个同名的新属性——它没有被多态地调用。

当然,更简单的解决方案就是自己设置Text属性......可能在构造函数中:

public class QuestionNode : TreeNode
{
    private readonly string question;

    public QuestionNode(string question)
    {
        this.question = question;
        this.Text = string.Format("Question: {0}", question);
    }
}

当然,您可以在属性设置器中执行此操作:

public class QuestionNode : TreeNode
{
    private string question;

    public string Question
    {
        get { return question; } 
        set
        {
            this.question = value;
            this.Text = string.Format("Question: {0}", question);
        }
    }
}

...但我个人会坚持使用构造函数版本,除非您有某些原因需要稍后更改问题。

于 2013-10-19T21:30:25.827 回答