Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Debci en 17 Octubre 2010, 17:48 pm



Título: Empezando en C#: Mis problemas con TreeView
Publicado por: Debci en 17 Octubre 2010, 17:48 pm
Buenas a todos, me presento y me estreno en este foro :P
Hace ya un tiempo tenia ganas de meterme en esto del C# y el .NET en general (Yo vengo de C++ y Java), gracias al amigo D4N93R, se me pusieron los dientes largos y decidí probarlo :P

Ahora os traigo mi primera duda, estoy diseñando una aplicación sencilla, como ejercicio, y pretendo hacerla bastante dinamica.
Es basicamente un programa en el que tu introduces un nombre en una textBox y mediante un boton lo escribes y vas añadiendo en forma de nodos de un arbol a un TreeView.

El problema se presenta cuando quiero añadir un nodo dentro de otro nodo.
Es posible hacerlo? Como?

Os dejo el codigo que tengo hecho:

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace WindowsFormsApplication1
  11. {
  12.    public partial class Form1 : Form
  13.    {
  14.        public Form1()
  15.        {
  16.            InitializeComponent();
  17.        }
  18.  
  19.        private void Form1_Load(object sender, EventArgs e)
  20.        {
  21.  
  22.  
  23.        }
  24.  
  25.        private void introducir_Click(object sender, EventArgs e)
  26.        {
  27.            TreeNode nodo = new TreeNode(nombreNodo.Text);
  28.            arbolClientes.Nodes.Add(nodo);
  29.        }
  30.    }
  31. }



EDITO: Solucionado xD ahora me salta el problema que no se como volver a la raiz, osea dejar de añadir sub-nodos dentro de uno general xD Tengo la sospecha de que debo cambiar el selected node, el problema es que no se detectar si hay alguno selecionado, no se si existe alguna condicion.

Os dejo el nuevo codigo:

Código
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Windows.Forms;
  10.  
  11. namespace WindowsFormsApplication1
  12. {
  13.    public partial class Form1 : Form
  14.    {
  15.        public TreeNode nodo;
  16.        public TreeNode nodo1;
  17.        public Dictionary<String, TreeNode> biblioteca;
  18.        public Boolean primera = true;
  19.        public Form1()
  20.        {
  21.            InitializeComponent();
  22.        }
  23.  
  24.        private void Form1_Load(object sender, EventArgs e)
  25.        {
  26.  
  27.  
  28.        }
  29.  
  30.        private void introducir_Click(object sender, EventArgs e)
  31.        {
  32.            nodo = new TreeNode(nombreNodo.Text);
  33.            if (primera)
  34.            {
  35.                arbolClientes.Nodes.Add(nodo);
  36.                primera = false;
  37.            }
  38.            else
  39.            {
  40.                arbolClientes.SelectedNode.Nodes.Add(nodo);
  41.            }
  42.  
  43.        }
  44.  
  45.        private void btnBorrar_Click(object sender, EventArgs e)
  46.        {
  47.            arbolClientes.Nodes.Remove(arbolClientes.SelectedNode);
  48.        }
  49.    }
  50. }

Saludos a todos :D


Título: Re: Empezando en C#: Mis problemas con TreeView
Publicado por: [D4N93R] en 17 Octubre 2010, 19:16 pm
Hola Debci x)

Mira, tienes varias propiedades dentro del treeview que te van a ayudar mucho en el manejo de los nodos, es un resumen de las propiedades más importantes.

ContextMenu   Gets or sets the shortcut menu associated with the control. (Inherited from Control.)
ContextMenuStrip   Gets or sets the ContextMenuStrip associated with this control. (Inherited from Control.)
Nodes   Gets the collection of tree nodes that are assigned to the tree view control.
SelectedNode   Gets or sets the tree node that is currently selected in the tree view control.


Y estos son del nodo como tal:

FirstNode    Gets the first child tree node in the tree node collection.
FullPath   Gets the path from the root tree node to the current tree node.
Index   Gets the position of the tree node in the tree node collection.
IsSelected   Gets a value indicating whether the tree node is in the selected state.
NextNode   Gets the next sibling tree node.
Nodes   Gets the collection of TreeNode objects assigned to the current tree node.
PrevNode   Gets the previous sibling tree node.
Parent   Gets the parent tree node of the current tree node.

PD: puse todo esto porque no entendí tu pregunta :P Quieres ir a la raiz del nodo que borraste? lo sacas con Parent del nodo antes de eliminarlo del treeview.

Un saludo!


Título: Re: Empezando en C#: Mis problemas con TreeView
Publicado por: Debci en 17 Octubre 2010, 20:24 pm
Muchas gracias jeje ya lo habia leido pero no esta mal refrescarlo, mi duda es, como puedo setear el nodo actual, osea el selecionado, a 0, a ninguno, para poder añadir nuevos nodos a la raiz del treeView.

Muchas gracias de nuevo.

Un saludo


Título: Re: Empezando en C#: Mis problemas con TreeView
Publicado por: [D4N93R] en 18 Octubre 2010, 00:54 am
Ah ok, bueno, si es entre la lista de nodos principales, es decir, de los que dependen directamente del treeview treeView1.Nodes.Insert(<index>, <el nodo aca>) en donde si pones 0 en el index va a insertarse de primero. Igual puedes hacer lo mismo con los hijos de otros Nodes.. :) El treeview es bastante poderoso y configurable, es el que usa windows. De hecho es hasta extendible, por ahí vi una especia de Gridview+TreeView muyinteresante.

Un saludo!


Título: Re: Empezando en C#: Mis problemas con TreeView
Publicado por: Debci en 18 Octubre 2010, 15:55 pm
Muchas gracias por tus respuestas.

Un saludo!