Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. // OrtizOL - xCSw - http://ortizol.blogspot.com
  2.  
  3. using System;
  4. using System.Collections.Generic;
  5. using System.ComponentModel;
  6. using System.Data;
  7. using System.Drawing;
  8. using System.IO;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using System.Windows.Forms;
  13.  
  14. namespace R05_06
  15. {
  16.     public partial class Main : Form
  17.     {
  18.         #region Constructores
  19.         /// <summary>
  20.         /// Creación de la ventana principal de la aplicación.
  21.         /// </summary>
  22.         public Main()
  23.         {
  24.             InitializeComponent();
  25.         }
  26.         #endregion
  27.  
  28.         #region Métodos
  29.         /// <summary>
  30.         /// Carga los nodos (directorios) de un elemento (directorio).
  31.         /// </summary>
  32.         /// <param name="nodoDirectorio">Nodo a cargar elementos.</param>
  33.         private void CargarNodo(TreeNode nodoDirectorio)
  34.         {
  35.             // Creación de instancia de DirectoryInfo para el directorio a explorar:
  36.             DirectoryInfo directorio = new DirectoryInfo(nodoDirectorio.FullPath);
  37.  
  38.             foreach (DirectoryInfo dir in directorio.GetDirectories())
  39.             {
  40.                 TreeNode nuevoNodo = new TreeNode(dir.Name);
  41.                 nodoDirectorio.Nodes.Add(nuevoNodo);
  42.                 nuevoNodo.Nodes.Add("*");
  43.             }
  44.         }
  45.         #endregion
  46.  
  47.         #region Eventos
  48.         /// <summary>
  49.         /// Evento que ocurre al cargar el formulario.
  50.         /// </summary>
  51.         /// <param name="sender">Objeto generador del evento.</param>
  52.         /// <param name="e">Datos del evento</param>
  53.         private void Main_Load(object sender, EventArgs e)
  54.         {
  55.             // Primer nodo del árbol:
  56.             TreeNode raiz = new TreeNode(@"C:\Windows");
  57.  
  58.             // Adición del nodo al objeto `TreeView`:
  59.             tvwTreeDirectory.Nodes.Add(raiz);
  60.  
  61.             // Carga del primer nodo, además de su expansión:
  62.             CargarNodo(raiz);
  63.             tvwTreeDirectory.Nodes[0].Expand();
  64.         }
  65.  
  66.         /// <summary>
  67.         /// Activa la carga de los elementos del nodo expandido.
  68.         /// </summary>
  69.         /// <param name="sender">Objeto generador del evento.</param>
  70.         /// <param name="e">Datos del evento</param>
  71.         private void tvwTreeDirectory_BeforeExpand(object sender, TreeViewCancelEventArgs e)
  72.         {
  73.             // Para un nodo que ha sido marcado para posterior visualización,
  74.             // remover la marca y leer el contenido real de ese nodo (directorio):
  75.             if (e.Node.Nodes[0].Text == "*")
  76.             {
  77.                 e.Node.Nodes.Clear();
  78.                 CargarNodo(e.Node);
  79.             }
  80.         }
  81.         #endregion
  82.     }
  83. }