Treeview y Listview
May 5, 2018 | Author: Anonymous |
Category:
Documents
Description
TREEVIEW y LISTVIEW TREEVIEW y LISTVIEW Imports System Imports System.Windows.Forms Imports System.Text 'Para manipular archivos gráficos Imports System.Drawing Imports System.Drawing.Imaging 'Para manipular directorios y ficheros Imports System.IO 'Para iniciar y detener procesos del sistema local Imports System.Diagnostics â variable que van después de la herencia Dim ajustar As Boolean = True ' Variable para ser utilizada en el método btAbrir_Click Dim nombreImg As String = "" Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'rellenar el Combobox con las letras de unidad del sistema: 'array de cadenas para contener los nombres de las unidades Dim drives() As String 'rellenar el array con las unidades lógicas del sistema drives = System.Environment.GetLogicalDrives() 'rellenar el Combobox dese el array Me.cbDrive.Items.AddRange(drives) lbImg.Text = "Ninguna imagen cargada" End Sub Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbDrive.SelectedIndexChanged Try 'la clase DirectoryInfo expone métodos de instancia para _ 'crear, mover y enumerar archivos en directorios y subdirectorios; 'se utiliza la clase DirectoryInfo para operaciones tÃpicas como copiar, _ 'mover, cambiar de nombre, enumerar, crear y eliminar directorios. 'obtener los directorios de la unidad seleccionada; Dim combo As New DirectoryInfo(Me.cbDrive.Text) Dim carpetas() As DirectoryInfo carpetas = combo.GetDirectories() 'limpiar el Treeview tvDir.Nodes.Clear() 'rellenar el Treeview con los nombres de los directorios; 'TreeNode representa a los nodos del Treeview Dim carpetas2 As DirectoryInfo Dim nodo As TreeNode For Each carpetas2 In carpetas 'el constructor de la clase Treenode inicializa una nueva instancia _ 'aquà se usa con 3 parámetros: _ '1 - el texto de etiqueta especificado _ '2 - la imagen que se ha de mostrar cuando el nodo de árbol esté _ 'seleccionado (Ãndice del Imagelist). '3 - la imagen que se ha de mostrar cuando el nodo de árbol esté _ 'sin seleccionar (Ãndice del Imagelist). nodo = New TreeNode(carpetas2.FullName, 0, 1) Me.tvDir.Nodes.Add(nodo) Next 'Mostrar mensaje del error capturado Catch pollo As Exception MessageBox.Show("Mensaje de error: " & pollo.Message, "Error al leer la unidad " & cbDrive.Text, MessageBoxButtons.OK, MessageBoxIcon.Error) cbDrive.Text = "C:\" End Try End Sub Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles tvdir.AfterSelect Try 'si el nodo del árbol no está expandido If Not e.Node.IsExpanded Then 'obtener los subdirectorios del nodo seleccionado Dim carpetas3 As DirectoryInfo carpetas3 = New DirectoryInfo(e.Node.FullPath) Dim carpetas4() As DirectoryInfo carpetas4 = carpetas3.GetDirectories() 'rellenar el Treeview con los nombres de los subdirectorios; 'TreeNode representa a los nodos del Treeview Dim subcarpetas As DirectoryInfo Dim nodo As TreeNode For Each subcarpetas In carpetas4 'el constructor de la clase Treenode inicializa una nueva instancia _ 'aquà se usa con 3 parámetros: _ '1 - el texto de etiqueta especificado _ '2 - la imagen que se ha de mostrar cuando el nodo de árbol esté _ 'seleccionado (Ãndice del Imagelist). '3 - la imagen que se ha de mostrar cuando el nodo de árbol esté _ 'sin seleccionar (Ãndice del Imagelist). nodo = New TreeNode(subcarpetas.Name, 0, 1) e.Node.Nodes.Add(nodo.Text) Next 'obtener los archivos del subdirectorio Dim archivos() As FileInfo archivos = carpetas3.GetFiles() 'limpiar el Listview Me.lvImg.Items.Clear() 'rellenar el Listview con los nombres de los archivos 'que cumplan la condición: terminar por las extensiones 'de archivos de imagen (se pueden cambiar las que aparecen aquÃ) Dim imagen As FileInfo For Each imagen In archivos 'a cada extensión se le puede asignar una imagen diferente eb el Imagelist Select Case imagen.Extension Case ".BMP", ".bmp" Me.lvImg.Items.Add(imagen.Name, 2) Case ".JPG", ".JPEG", ".jpg", ".jpeg" Me.lvImg.Items.Add(imagen.Name, 3) End Select Next End If 'si no hay elementos en el Listview, vaicar la caja de imagen If Me.lvImg.Items.Count = 0 Then Me.pbImg.Image = Nothing Me.lbImg.Text = "Ninguna imagen cargada" End If 'Mostrar mensaje del error capturado Catch pollo As Exception MessageBox.Show("Mensaje de error: " & pollo.Message, "Error al leer imágenes ", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lvimg.SelectedIndexChanged 'procedimiento descrito más abajo Call refrescarImg() 'mostrar información sobre ancho y alto de la imagen seleccionada Me.lbImg.Text = "Ancho de imagen: " + pbImg.Image.Width.ToString + _ " px. / Alto de imagen: " + pbImg.Image.Height.ToString + " px" End Sub Private Sub refrescarImg() Try 'si hay algún elemento seleccionado en el Listview If Me.lvimg.SelectedItems.Count > 0 Then 'invalidar la región gráfica del Picturebox para volver a rellenarla 'con la imagen elegida en el control Listview Me.pbImg.Invalidate() Me.pbImg.Image = New Bitmap(Me.tvdir.SelectedNode.FullPath & "\" & Me.lvimg.SelectedItems(0).Text) End If 'Mostrar mensaje del error capturado Catch pollo As Exception MessageBox.Show("Mensaje de error: " & pollo.Message, "Error al leer imágenes ", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub Private Function fnClipboard() As Object 'Copiar imagen al portapeles 'SetDataObject lleva 2 parámetros (objeto, booleano) 'Si booleano es true, el objeto queda en el portapapeles 'después de haber cerrado la aplicación Clipboard.SetDataObject(pbImg.Image, True) 'Variable objClipboard para contener el portapeles Dim objClipboard As IDataObject = Clipboard.GetDataObject() 'devuelve el portapapeles como mapa de bits Return objClipboard.GetData(DataFormats.Bitmap) End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btcopiar.Click If Not pbImg.Image Is Nothing Then 'función detallada en el siguiente bloque Call fnClipboard() End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btajustar.Click 'para que solamente lo haga si hay imagen en la caja de imagen If Not pbImg.Image Is Nothing Then 'si ya está a tamaño real, pasar a modo Ajustado If ajustar = True Then 'pasar a modo Normal (tamaño real) pbImg.SizeMode = PictureBoxSizeMode.StretchImage ajustar = False Else 'si la imagen está en modo Ajustado (Stretch) pbImg.SizeMode = PictureBoxSizeMode.CenterImage ajustar = True End If End If End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btflip.Click 'para que solamente lo haga si hay imagen en la caja de imagen If Not pbImg.Image Is Nothing Then pbImg.Image.RotateFlip(RotateFlipType.RotateNoneFlipX) pbImg.Refresh() 'Recarga la imagen End If End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btguardar.Click 'para que solamente lo haga si hay imagen en la caja de imagen If Not pbImg.Image Is Nothing Then dlgSave = New SaveFileDialog dlgSave.Filter = "Mapas de bits (*.bmp)|*.bmp|Imágenes JPG (*.jpg)|*.jpg" dlgSave.Title = "Guarda la imagen como..." If dlgSave.ShowDialog() = DialogResult.OK Then nombreImg = dlgSave.FileName If (nombreImg.EndsWith("jpg")) Then pbImg.Image.Save(nombreImg, ImageFormat.Jpeg) End If If (nombreImg.EndsWith("bmp")) Then pbImg.Image.Save(nombreImg, ImageFormat.Bmp) End If End If End If End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btsalir.Click Me.Close() End Sub Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btayuda.Click MessageBox.Show("Explorador de imágenes realizado en Visual Basic .NET." + vbCrLf + "Autor: MILIUCO. Fecha: 09/10/2003.", "Acerca de...", MessageBoxButtons.OK) End Sub Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btcode.Click 'Obtener la ruta a la carpeta desde la que se ha iniciado la aplicación, Dim stRuta As String = Application.StartupPath Try ' para detectar y manipular excepciones (errores del programa) 'ProcessStartInfo se utiliza para iniciar procesos Dim abrirDoc As ProcessStartInfo = New ProcessStartInfo 'Añadir a la ruta "\Form1.txt" para abrir el archivo abrirDoc.FileName = stRuta + "\Form1.txt" 'Información al usuario de la ruta obtenida en su sistema MessageBox.Show("El código del programa se muestra mediante una instancia del Bloc de Notas." + vbCrLf + "El archivo"" Form1.txt"" ha de estar junto al ejecutable del programa." + vbCrLf + "La ruta al archivo ""Form1.txt"" en tu sistema deberÃa ser:" + vbCrLf + abrirDoc.FileName, "Ver el código", MessageBoxButtons.OK) 'modo de apertura de archivo (también puede ser edit, print...) abrirDoc.Verb = "open" 'abrir en ventana normal abrirDoc.WindowStyle = ProcessWindowStyle.Normal 'Abrir el archivo mediante su programa asociado en Windows Process.Start(abrirDoc) Catch a As Exception 'Objeto Exception de nombre a 'Mensaje relativo a la excepción lanzada MessageBox.Show("Se ha producido la siguiente excepción:" _ + vbCrLf + vbCrLf + a.Message, "Mensaje de error") End Try End Sub PAGE 5
Comments
Copyright © 2024 UPDOCS Inc.