Почему бы вам не создать новые классы, которые наследуются от TreeView
и TreeNodeCollection
? Новый TreeView
будет использовать ваш новый TreeNodeCollection
, и вы можете переопределить Add()
метод TreeNodeCollection
, чтобы сделать то, что вы предлагаете.
Метод должен был бы:
1. Найдите правильную позицию для вставки и 2. Вставьте новый узел.
Самая тривиальная реализация будет повторять коллекцию до thisNode.value<=newNode.value<nextNode.value
. Затем вставьте перед nextNode.Index
. Вы могли бы увидеть увеличение производительности, если бы вы использовали другой алгоритм поиска, в зависимости от размера коллекции. (На ум приходит что-то вроде бинарного поиска.)
Примечание: Вы также можете просто создать метод расширения для TreeNodeCollection
, который делает то же самое. Однако переопределение метода Add()
гарантирует, что ваш TreeView
будет всегда отсортирован. Создание только метода расширения может привести к неопределенным результатам, если он еще не отсортирован перед вашим вызовом AddIntoSorted()
.