如何避免treeview负数节点数问题

时间:2011-03-03 10:35:12

标签: vb6 treeview

我将数据库表数据绑定到treeview。 在documntation中,它将节点计数属性称为整数值,它是2字节的有符号。 因此,如果节点超出此范围,则节点计数变为负数。 有没有解决方法呢?

1 个答案:

答案 0 :(得分:3)

是的,这是一个documented错误。幸运的是,没有人在现实世界中遇到它,因为单个TreeView控件需要显示超过32,767个节点才是完全没有意义的。

如链接知识库文章中所述,最佳解决方法是在TreeView控件中维护较少的节点。考虑在多个TreeView之间分割数据,或者使用更适合这种大量数据的不同控件。

如果您绝对必须使用TreeView,Microsoft建议您记住以下几点:

  • 随着您添加越来越多的节点,性能将变得非常慢。
  • 不要添加超过65535个节点。 (这是本机控件强加的限制,它使用无符号整数来存储节点数。)
  • 使用SendMessage API function获取真实节点数。或者,您可以使用模块或公共级变量来跟踪TreeView中有多少节点。每次添加或删除节点时,将变量递增或递减1。如果您需要确定节点数,则必须这样做,因为Count集合的Nodes属性不会返回正确的值。
  • 不要依赖节点对象的Index属性。例如,节点32767的Index属性为32767,节点32768的属性为-32768。
  • 您仍然可以使用Key或将数字传递给Nodes集合来引用节点。
    例如:

    TreeView1.Nodes(40000) refers to node 40000.