Да, это задокументированная ошибка .К счастью, никто никогда не сталкивался с этим в реальном мире, потому что совершенно бессмысленно, когда одному элементу управления TreeView нужно отображать более 32 767 узлов.
Как упоминалось в статье базы знаний, лучшим обходным путем являетсяподдерживать меньше узлов в вашем TreeView
контроле.Попробуйте разделить данные между несколькими TreeViews или использовать другой элемент управления, который лучше подходит для таких невероятно больших объемов данных.
Если вам абсолютно необходимо использовать TreeView
, Microsoft рекомендует сохранить следующее вобратите внимание:
- Производительность будет чрезвычайно низкой, если вы добавляете все больше и больше узлов.
- Не добавляйте более 65535 узлов.(Это ограничение, наложенное собственным элементом управления, который использует целое число без знака для хранения счетчика узлов.)
- Используйте
SendMessage
API-функцию , чтобы получить истинное количество узлов.Кроме того, вы можете использовать переменную уровня модуля или общедоступного уровня, чтобы отслеживать количество узлов в TreeView.Каждый раз, когда вы добавляете или удаляете узел, увеличиваете или уменьшаете переменную на единицу.Это необходимо, если вам необходимо определить количество узлов, поскольку свойство Count
коллекции Nodes
не будет возвращать правильное значение. - Не полагайтесь на свойство
Index
узлаобъект.Например, свойство Index
равно 32767 для узла 32767, но -32768 для узла 32768. Вы по-прежнему можете ссылаться на узел, используя его Key
или передавая число вNodes
коллекция.
Например:
TreeView1.Nodes(40000) refers to node 40000.