¿Cómo se relaciona el databind con un control System.Windows.Forms.Treeview?

Estoy mirando este control, y parece carecer de las propiedades .net “datasource” y “datamember” estándar para el enlace de datos. ¿Este control no es vinculable? Puedo escribir alguna función personalizada que llene la vista de árbol de una fuente de datos dada, supongo, e incrustar objetos de datos según sea necesario, pero ¿esa es la ‘mejor práctica’? ¿O simplemente todo el mundo usa un control treeview de terceros?

Tiene razón en que no hay enlace de datos. La razón es que TreeViews son estructuras de datos jerárquicas. Es decir, no es una lista directa. Como resultado, la opción de enlace de datos no es válida para decir una estructura de lista.

Tristemente, está creando sus propios métodos de llenado o comprando controles de terceros (que al final tendrán sus propios métodos de llenado).

Aquí hay un artículo decente de MSDN sobre la vinculación de datos jerárquicos .

Uso el control de árbol de Developer’s Express. Tomará una tabla de datos y la mostrará / editará de forma jerárquica. Todo lo que necesita es un campo de clave principal y un campo de identificación padre en la tabla y puede averiguar qué va donde.

Puede hacer lo mismo si tira su propio código y usa su propia clase.

class Node { System.Collections.Generic.List _Children; String Description; void Node() { _Children = new System.Collections.Generic.List(); } public System.Collections.Generic.List Children() { return (_Children); } } class Program { static void Main(string[] args) { System.Collections.Generic.List myTree = new System.Collections.Generic.List(); Node firstNode = new Node(); Node childNode = new Node(); firstNode.Children().Add(childNode); } } 

Si solo se trata de un par de niveles, me gusta llenar un conjunto de datos con un par de tablas y configurar una DataRelation en las columnas. Luego usa algunos bucles nesteds y crea sus nodos de árbol.