Para mejor explicación dejo la imagen del programa en ejecución
Lo que aquí se pretende es mostrar la utilización de FolderBrowserDialog, TreeView y PictureBox.
Código del Programa
//
// Pequeño Explorador de Imagenes con C# en .Net
// Programo: http://gsur.blogspot.com
// El uso y modificación del código es libre y no olviden mencionar el origen gsur.blogspot.com
//
using System;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using System.Linq;
class Formulario : Form
{
private System.ComponentModel.IContainer components = null;
private System.Windows.Forms.FolderBrowserDialog DialogoSeleccionarCarpetas;
private System.Windows.Forms.Button btnBuscarCarpeta;
private System.Windows.Forms.TreeView Arbol;
private System.Windows.Forms.PictureBox Imagen;
private System.Windows.Forms.Panel PanelSup;
private System.Windows.Forms.Label lblDetalles;
public Formulario()
{
this.DialogoSeleccionarCarpetas = new System.Windows.Forms.FolderBrowserDialog();
this.btnBuscarCarpeta = new System.Windows.Forms.Button();
this.Arbol = new System.Windows.Forms.TreeView();
this.Imagen = new System.Windows.Forms.PictureBox();
this.PanelSup = new System.Windows.Forms.Panel();
this.lblDetalles = new System.Windows.Forms.Label();
this.Size = new System.Drawing.Size(845,610);
this.Text = "Clic en el boton Seleccionar carpeta";
PanelSup.Location = new Point(0,0);
PanelSup.Size = new Size(845, 50);
PanelSup.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
PanelSup.Anchor = (AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right);
btnBuscarCarpeta.Location = new System.Drawing.Point(8, 10);
btnBuscarCarpeta.Name = "btnBuscarCarpeta";
btnBuscarCarpeta.Size = new System.Drawing.Size(180, 32);
btnBuscarCarpeta.TabIndex = 1;
btnBuscarCarpeta.Text = "Seleccionar Carpeta";
btnBuscarCarpeta.UseVisualStyleBackColor = true;
btnBuscarCarpeta.Click += new System.EventHandler(btnBuscarCarpeta_Click);
Arbol.Location = new Point(8, 64);
Arbol.Size = new Size(480, 515);
Arbol.Anchor = AnchorStyles.Top | AnchorStyles.Left;
Arbol.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(Arbol_AfterSelect);
Imagen.Location = new System.Drawing.Point(490, 64);
Imagen.Size = new System.Drawing.Size(340, 260);
Imagen.TabStop = false;
Imagen.SizeMode = PictureBoxSizeMode.StretchImage;
Imagen.BorderStyle = BorderStyle.Fixed3D;
Imagen.Anchor = AnchorStyles.Top | AnchorStyles.Left;
lblDetalles.Location = new System.Drawing.Point(500,340);
lblDetalles.Font = new Font(lblDetalles.Font.Name, 8, FontStyle.Bold, lblDetalles.Font.Unit);
Controls.Add(PanelSup);
PanelSup.Controls.Add(btnBuscarCarpeta);
Controls.Add(Arbol);
Controls.Add(Imagen);
Controls.Add(lblDetalles);
DialogoSeleccionarCarpetas.ShowNewFolderButton = false;
DialogoSeleccionarCarpetas.RootFolder = Environment.SpecialFolder.Desktop;
}
private void btnBuscarCarpeta_Click(object sender, EventArgs e)
{
System.IO.FileInfo []archivos;
DialogResult result = DialogoSeleccionarCarpetas.ShowDialog();
if( result == DialogResult.OK )
{
this.Text = DialogoSeleccionarCarpetas.SelectedPath;
var dir = new System.IO.DirectoryInfo(DialogoSeleccionarCarpetas.SelectedPath);
//Uso de LINQ to FileSystem (O LINQ to Objects)
var resultado = from arch in dir.GetFiles()
where arch.Extension.ToLower() == ".jpg" ||
arch.Extension.ToLower() == ".bmp" ||
arch.Extension.ToLower() == ".png" ||
arch.Extension.ToLower() == ".gif" ||
arch.Extension.ToLower() == ".jpeg"
select arch;
archivos=resultado.ToArray<System.IO.FileInfo>();
System.IO.FileInfo item;
Arbol.BeginUpdate();
Arbol.Nodes.Clear();
for(int i=0;i<archivos.Length;i++)
{
item = archivos[i];
if (item.Extension.ToLower() == ".jpg" ||
item.Extension.ToLower() == ".bmp" ||
item.Extension.ToLower() == ".png" ||
item.Extension.ToLower() == ".gif" ||
item.Extension.ToLower() == ".jpeg")
{
Arbol.Nodes.Add(item.FullName);
}
}
Arbol.EndUpdate();
}
}
private void Arbol_AfterSelect(System.Object sender, System.Windows.Forms.TreeViewEventArgs e)
{
System.IO.FileInfo ArchivoImagen = new System.IO.FileInfo(Arbol.SelectedNode.FullPath);
long tArchivo = ArchivoImagen.Length;
string tam_Archivo;
if(tArchivo>1024)
{
if(tArchivo / 1024 > 1024)
tam_Archivo = (tArchivo / (1024*1000)).ToString("N") + " Megabytes";
else
tam_Archivo = (tArchivo / 1024).ToString("N") + " Kilobytes";
}
else
tam_Archivo = tArchivo.ToString("N") + " Bytes";
Imagen.Image = System.Drawing.Image.FromFile(Arbol.SelectedNode.FullPath);
lblDetalles.Text = "Nombre: " + ArchivoImagen.Name;
lblDetalles.Text += "nnTamaño del Archivo: " + tam_Archivo;
lblDetalles.Text += "nnDimensiones (Ancho x Alto): ";
lblDetalles.Text += Imagen.Image.Width.ToString("#,###");
lblDetalles.Text += " x " + Imagen.Image.Height.ToString("#,###") + " Pixeles";
lblDetalles.Size = new Size (lblDetalles.PreferredWidth, lblDetalles.PreferredHeight);
}
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
[STAThread]
public static void Main()
{
Application.Run(new Formulario());
}
}