Quiero mostrar todos los elementos secundarios del primer nivel en la vista de árbol de forma predeterminada. Y luego expanda todos los hijos de aquellos al hacer clic.Cómo expandir los hijos de primer nivel solo de Treeview
Respuesta
Probar:
foreach (TreeNode tn in treeView1.Nodes) {
tn.Expand();
}
Al añadir nodos en tiempo de ejecución, sólo puede comprobar el nivel y ampliar, si es necesario:
private void ShoudAutoExpand(TreeNode tn) {
if (tn.Level == 0)
tn.Expand();
}
No hay NodeAdded
caso se puede enganchar en comprobar que automáticamente. Debería determinarse a sí mismo si un nodo debería o no expandirse "por defecto".
Actualización:
Desde su comentario, parece que usted quiere tener todos los nodos expandidos de nivel 0, pero luego expandir todos los nodos secundarios de nivel 1 cuando se expande ellos.
Try suscribirse al evento BeforeExpand con este código:
private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e) {
treeView1.BeforeExpand -= treeView1_BeforeExpand;
if (e.Node.Level == 1) {
e.Node.ExpandAll();
}
treeView1.BeforeExpand += treeView1_BeforeExpand;
}
la primera parte muestra a los niños de primer nivel como me gustaría. Pero cuando hago clic en cualquiera de ellos, los herederos no se expanden por completo. – zsharp
@zsharp Código actualizado. Parece que básicamente quieres que todos los nodos se expandan automáticamente "excepto" los nodos de nivel 1. ¿Suena bien? – LarsTech
esa es la única, estaba intentando con onmouseclick que era un desastre. gracias – zsharp
puede intentar algo como esto .. tendrá que cambiar el ejemplo para adaptarse a su propio código ya se omite la pegar cualquier código que ha o el intento de tener
private void addChildNode_Click(object sender, EventArgs e)
{
var childNode = textBox1.Text.Trim();
if (!string.IsNullOrEmpty(childNode)) {
TreeNode parentNode = treeView2.SelectedNode ?? treeView2.Nodes[0];
if (parentNode != null) {
parentNode.Nodes.Add(childNode);
treeView2.ExpandAll();
}
}
}
si quieres un recursivo, intente esto:
void expAll(TreeNode node)
{
node.Expand();
foreach(TreeNode i in node.Nodes)
{
expAll(i);
}
}
private TreeNode ExpandUptoLevel(TreeNode tn,int level)
{
if (level != 0)
{
level --;
tn.Nodes[0].Expand();
return ExpandUptoLevel(tn.FirstNode, level);
}
return tn;
}
Para expandir todos los nodos de un árbol a un nivel, el código anterior no funciona. Simplemente agregue un cheque para leer y comparar el nivel de nodo real al nivel al que desea expandir. Aquí hay un fragmento de código.
private void ExpandUptoLevel(TreeNode tn, int level)
{
if (level >= tn.Level)
{
tn.Expand();
foreach (TreeNode i in tn.Nodes)
{
ExpandUptoLevel(i,level);
}
}
}
Respuesta a la publicación de Ravindra Sinare - no publicar inmediatamente arriba. –
Sólo para abrir los primeros nodos:
for (int i = 0; i< treeView1.Nodes.Count; i++)
{
treeView1.Nodes[i].Expand();
}
Si bien este fragmento de código puede resolver la pregunta, [incluyendo una explicación] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) realmente ayuda a mejorar la calidad de su publicación. Recuerde que usted está respondiendo la pregunta a los lectores en el futuro, y es posible que esas personas no sepan los motivos de su sugerencia de código. Por favor, intente no saturar su código con comentarios explicativos, ¡esto reduce la legibilidad tanto del código como de las explicaciones! – kayess
- 1. ¿Cómo obtener solo divs de primer nivel?
- 2. Expandir TreeView completo en Silverlight
- 3. Seleccionar solo elementos de primer nivel en jquery
- 4. Aplicar estilo solo al primer nivel de las etiquetas td
- 5. ¿Treeview usa enlaces de comando para expandir/contraer?
- 6. Aplicar estilo solo en elementos secundarios en el primer nivel
- 7. entidad Código Marco relaciones de primer nivel
- 8. Problema con jstree puede expandir nodos sin hijos
- 9. Como llegar primer nivel de los niños por LINQ
- 10. ¿Cómo enumerar solo los directorios de nivel superior en Python?
- 11. Carga diferida de TreeView en .NET
- 12. Cómo seleccionar elemento TreeView desde el código
- 13. Java JTree expande solo nodos de nivel uno
- 14. encontrar niños de primer nivel en rieles de nokogiri
- 15. ¿Cómo utilizar el enésimo hijo con solo hijos directos?
- 16. Mostrando todos los hijos de cada padre
- 17. Propiedad de solo lectura PropertyGrid en el nivel de objeto
- 18. Android Treeview
- 19. NSOutlineView - Expandir automáticamente todos los nodos
- 20. ¿Expandir pestañas a espacios en vim solo en archivos Python?
- 21. ¿Cómo expandir automáticamente todos los nodos TTreeView?
- 22. jQuery: ¿Cómo selecciono todos los P hijos de mi padre?
- 23. WPF: cómo expandir solo un expansor en cualquier momento
- 24. Mostrar todas las ramas de descendientes de primer nivel usando Git
- 25. TreeView search
- 26. Xpath ¿cómo obtengo la longitud total de la cadena de todos los atributos en los hijos de los padres?
- 27. No se construyen los módulos hijos Maven
- 28. Cómo eliminar eficientemente los elementos verificados de un TreeView?
- 29. ¿Cómo accedo a los hijos de un ItemsControl?
- 30. ¿Cómo unir los hijos de una grilla a una lista?
Iterar los nodos y llamar a su método de despliegue(). "aquellos que hacen clic" es demasiado vago. –