我有一个树视图,它利用StateImageList在树中实现“正确的”三态检查。然而问题是第一层节点被添加到树中。默认情况下,新TreeNode上的StateImageIndex为-1,我无法确切知道它们已被添加。作为子节点的节点我可以捕获BeforeExpand并正确设置StateImageIndex,但我似乎无法弄清楚如何处理顶层节点。
我当前的工作(我真的很讨厌)是我在后台运行一个计时器检查树视图中的节点数是否已经改变,如果它已经运行并找到所有的根节点将StateImageIndex设置为-1并将它们设置为0.它可以工作,但它似乎是一种可怕的资源浪费。任何人都有更好的建议吗?
答案 0 :(得分:3)
没有事件,你也无法生成一个。本机控件不支持事件,因为只有代码才能添加节点,而不是用户。您无法生成一个,因为您无法进入TreeNodeCollection类。一个简单的解决方法是向您的类添加静态CreateNode()工厂方法,期望客户端代码使用它来创建正确初始化的节点。
你应该考虑DrawMode属性,这样你就可以按照你想要的方式绘制节点。 HitTest()用于检测点击次数,ControlPaint.DrawCheckBox()用于绘制框。