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