lunes, 15 de febrero de 2016

LISTVIEW-TREEVIEW


TREEVIEW-LISTVIEW


PRIMER FORMULARIO

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace ListView1
{
    public partial class Form1 : Form
    {
        Archivo archivoRaiz = ArchivoDAO.cargarArchivos();
        Archivo archivoSeleccion;
        private string nuevo;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            mostrarArchivosTree();
            txtPath.Text = nuevo;
        }

        private void mostrarArchivosTree()
        {
            TreeNode nodoRaiz = new TreeNode(archivoRaiz.Archivo1);
            nodoRaiz.Tag = archivoRaiz;
            treeDirectorios.Nodes.Add(nodoRaiz);          
            if (archivoRaiz.Archivos.Count() > 0)
            {
                agregarNodos(treeDirectorios.Nodes[0],archivoRaiz.Archivos);
            }
        }
        private void agregarNodos(TreeNode nodoPadre, List<Archivo> archivosHijo)
        {
            try
            {
                foreach (var iterArchivo in archivosHijo)
                {
                    TreeNode nodoHijo = new TreeNode(iterArchivo.Archivo1);
                    nodoHijo.Tag = iterArchivo;
                    nodoPadre.Nodes.Add(nodoHijo);
                    if (iterArchivo.Archivos != null)
                    {
                        agregarNodos(nodoHijo, iterArchivo.Archivos);
                    }
                }
            }
            catch (Exception)
            { }
        }
        private void mostrarListaIco(List<Archivo> archivos)
        {
            try
            {
                lstvIcono.View = View.LargeIcon;
                ImageList imagenes = new ImageList();
                imagenes.Images.Add(new Bitmap(@"E:\EPN\sexto\phv\PHV\ListView1\ListView1\Imagenes\triste.jpg"));
                lstvIcono.LargeImageList = imagenes;
                lstvIcono.Items.Clear();
                foreach (Archivo iterArchivo in archivos)
                {
                    ListViewItem itemLista = new ListViewItem(Convert.ToString(iterArchivo.Archivo1), 0);
                    itemLista.Tag = archivoRaiz;
                    lstvIcono.Items.Add(itemLista);
                    itemLista.SubItems.Add(iterArchivo.Archivo1);
                }
            }
            catch (Exception)
            { }
        }
        public void agregarArchivo(Archivo padreBuscado, Archivo hijo)
        {
            if (archivoRaiz.Equals(padreBuscado))
            {
                Console.WriteLine("Archivo padre localizado:" + archivoRaiz);
                archivoRaiz.Archivos.Add(hijo);
            }
            else
            {
                Console.WriteLine("Estructura iterada:");
                Console.WriteLine(archivoRaiz);
                Archivo padre = buscarArchivo(archivoRaiz.Archivos, padreBuscado);
                Console.WriteLine("Valor final de archivo padre:" + padre);
                padre.Archivos.Add(hijo);
            }
        }
        public Archivo buscarArchivo(List<Archivo> listaArchivos, Archivo padreBuscado)
        {
            Archivo auxiliar = new Archivo("AUX");
            foreach (var iterArchivo in listaArchivos)
            {
                Console.WriteLine(iterArchivo);

                if (auxiliar.Equals(padreBuscado))
                {
                    Console.WriteLine("Archivo padre localizado:" + auxiliar);
                    return auxiliar;
                }
                else if (iterArchivo.Equals(padreBuscado))
                {
                    Console.WriteLine("Archivo padre localizado:" + iterArchivo);
                    return iterArchivo;
                }
                else
                {
                    if (iterArchivo.Archivos.Count() > 0)
                    {
                        auxiliar = buscarArchivo(iterArchivo.Archivos, padreBuscado);
                    }
                }
            }
            return auxiliar;
        }
        private void mostrarHijos()
        {
            try
            {
                Archivo archivoSel = (Archivo)lstvIcono.SelectedItems[0].Tag;
                this.Text = archivoSel.Archivo1;
                traerHijos(archivoSel);
            }
            catch (Exception ex)
            { }
        }
        private void traerHijos(Archivo archivoH)
        {
            if (archivoH.Archivos.Count>0)
            {
                lstvIcono.Items.Clear();
                foreach (var iter in archivoH.Archivos)
                {
                    ListViewItem itemLista = new ListViewItem(iter.Archivo1, 0);
                    itemLista.Tag = iter;
                    lstvIcono.Items.Add(itemLista);
                    itemLista.SubItems.Add(iter.Archivo1);
                }
            }
        }
        private void lstvIcono_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            mostrarHijos();
        }
        private void atras()
        {
            try
            {
                archivoSeleccion = (Archivo)lstvIcono.SelectedItems[0].Tag;
                mostrarListaIco(archivoSeleccion.Archivos);
            }
            catch (Exception)
            { }
        }
        private void btnAtras_Click(object sender, EventArgs e)
        {
            lstvIcono.Items.Clear();
            atras();
        }

        private void treeDirectorios_AfterSelect(object sender, TreeViewEventArgs e)
        {
            archivoSeleccion = (Archivo)treeDirectorios.SelectedNode.Tag;
            this.Text =archivoSeleccion.Archivo1;
            mostrarListaIco(archivoSeleccion.Archivos);
            mostrarPath();
        }

        private void crearNuevo_Click(object sender, EventArgs e)
        {
            try
            {
                FrmCrearNuevo crearNuevo = new FrmCrearNuevo(nuevo);
                crearNuevo.ShowDialog();
                archivoSeleccion = (Archivo)treeDirectorios.SelectedNode.Tag;

                Archivo archivoNuevo = new Archivo(crearNuevo.NuevoArchivo);
                agregarArchivo(archivoSeleccion, archivoNuevo);
                treeDirectorios.Nodes.Clear();
                mostrarArchivosTree();
            }
            catch (Exception)
            { }
        }

        private void mostrarPath()
        {
            treeDirectorios.PathSeparator = "\\";
            int hijos = treeDirectorios.SelectedNode.GetNodeCount(true);
            //decimal hijosPorcentaje = ((decimal)hijos / (decimal)treeDirectorios.GetNodeCount(true)) * 100;
            txtPath.Text = treeDirectorios.SelectedNode.FullPath;
            tsElementos.Text = Convert.ToString(hijos) + " Elementos";
        }
        private void lstvIcono_MouseClick(object sender, MouseEventArgs e)
        {

        }

    }
}
============================CREAR NUEVO=========================
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ListView1
{
    public partial class FrmCrearNuevo : Form
    {
        private string nuevoArchivo;

        public string NuevoArchivo
        {
            get { return nuevoArchivo; }
            set { nuevoArchivo = value; }
        }
 
        public FrmCrearNuevo()
        {
            InitializeComponent();
        }

        public FrmCrearNuevo(string nuevo)
        {
            InitializeComponent();
            this.nuevoArchivo = nuevo;
        }
        private void btnGuardar_Click(object sender, EventArgs e)
        {
            nuevoArchivo = txtNuevo.Text;
            this.Close();
        }
    }
}
============================ARCHIVO DAO========================

namespace ListView1
{
    class ArchivoDAO
    {
        public static Archivo cargarArchivos()
        {                
            Archivo archivosRaiz = new Archivo("\\");            
            return archivosRaiz;
        }
        }
}
==============================ARCHIVO=========================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ListView1
{
    public class Archivo
    {
        private int id;

        public int Id
        {
          get { return id; }
          set { id = value; }
        }
        private string archivo;

        public string Archivo1
        {
          get { return archivo; }
          set { archivo = value; }
        }
        private List<Archivo> archivos ;

        public List<Archivo> Archivos
        {
          get { return archivos; }
          set { archivos = value; }
        }
        
        public Archivo(String nombreInit)
        {
            this.archivo = nombreInit;
            archivos = new List<Archivo>();
        }
        public override string ToString()
        {
            return Archivo1;
        }
    }
}

No hay comentarios:

Publicar un comentario