1

我有一个树视图,它利用 StateImageList 在树中实现“正确的”三态检查。然而,问题是添加到树中的第一层节点。默认情况下,新 TreeNode 上的 StateImageIndex 为 -1,我无法真正知道它们已被添加。作为子节点的节点我可以在 BeforeExpand 上捕获并正确设置 StateImageIndex 但我似乎无法弄清楚如何处理顶层节点。

我目前的工作(我真的很讨厌)是我有一个计时器在后台运行,检查树视图中的节点数量是否发生了变化,如果它已经运行并找到所有具有 StateImageIndex 的根节点设置为 -1 并将它们设置为 0。它有效,但它似乎是对资源的严重浪费。有人有更好的建议吗?

4

1 回答 1

3

没有事件,你也不能生成一个。本机控件不支持事件,因为只有代码可以添加节点,而不是用户。您无法生成一个,因为您无法进入 TreeNodeCollection 类。一个简单的解决方法是将静态 CreateNode() 工厂方法添加到您的类中,并期望客户端代码使用它来创建正确初始化的节点。

您应该考虑 DrawMode 属性,以便您可以按照您想要的方式绘制节点。HitTest() 检测点击,ControlPaint.DrawCheckBox() 绘制框。

于 2012-04-20T01:11:03.410 回答