Вы находитесь на странице: 1из 11

El Control ListView

Uso de Estructuras
Fecha: 9/Jun/2005 (9 de Junio de 2005) Autor: Ing. Fernando Luque Snchez DCE 4 Estrellas

fls2307@hotmail.com fernandoluque2307@infonegocio.net.pe

Sres. Desarrolladores, en esta oportunidad les envie un aporte para poder comprender la parte bsica de uno de los controles mas utilizados en aplicaciones de Escritorio, el control ListView.

UN POCO DE TEORIA
El control ListView es un control de lista que tiene mucha versatilidad, se puede utilizar hasta en 4 vistas diferentes: LargeIcon, Details, SmallIcon y List (Iconos grandes, Detalle, Iconos pequeos y Lista). Las mismas opciones estn incluidas en el botn Vistas del Explorador de Windows. El control ListView se usa generalmente ligado a una o dos Listas de Imagenes includas en controles ImageList, estos permiten mostrar los conos de cada elemento cuando se selecciona las opciones de LargeIcon y SmallIcon. El control ListView presenta una lista de elementos que son heredados de la clase ListViewItem, cada uno de estos elementos a su vez tiene Subelementos (SubItems), que van relacionados con el ListViewItem respectivo.En la vista Detalle (propiedad View en la opcin Details) permite mostrar el control con los ListViewItem y los SubItems respectivos en una cuadricula similar a un control Grid (control DataGrid). En esta vista se muestran los encabezados de cada columna (coleccin Columns) donde podemos asignar nombres a las mismas, un texto que se mostrar en cada una asi como el ancho. Como en todo control de Lista los elementos del control ListView se agregan a la coleccin Items. Pueden visitar los enlaces http://www.elguille.info/colabora/NET2005/FernandoLuque_El_Control_ComboBox.ht m para el control ComboBox http://www.elguille.info/colabora/NET2005/FernandoLuque_El_Control_ListBox.htm para el control ListBox Algunas de las propiedades ligadas a la vista Details del control ListView son:

Propiedad AllowColumnReorder GridLines FullRowSelect HeaderStyle

Descripcin Permite ordenar los Items incluidos Cuando est en True permite mostrar lneas de divisin. Permite seleccionar el Item con todos los SubItems que dependen de este Permite especificar el estilo de los encabezados de las columnas.

NUESTRO EJEMPLO
El aporte que comparto con ustedes seores desarrolladores muestra como ingresar dos datos: Nombre y Nota y mostrarlos en un control ListView. Estos dos datos estn incluidos en una Estructura previamente creada, luego se crea un arreglo donde cada elemento es del tipo de la estructura. ES NECESARIO ANOTAR QUE LA CONSISTENCIA DE LOS DATOS REPETIDOS O DEL TIPO ADECUADO (String para el nombre y Numeric para la nota) NO ESTAN COSISTENCIADOS. A continuacin sigue cdigo en Visual Basic
Structure alumno Public nombre As String Public nota As Integer End Structure Dim aIntegrantes() As alumno Dim cContador As Integer Private Sub Agregar(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cmdAgregar.Click If Len(Trim(txtNombre.Text)) = 0 Or Len(Trim(txtNota.Text)) = 0 Then MessageBox.Show("Faltan datos...", "Error") Exit Sub End If cmdMostrar.Enabled = True ReDim Preserve aIntegrantes(cContador) aIntegrantes(cContador).nombre = txtNombre.Text aIntegrantes(cContador).nota = txtNota.Text cContador += 1 txtNombre.Focus()

End Sub

El cdigo completo del artculo se encuentra en el archivo adjunto al final del artculo, no olviden de calificar en PanoramaBox. Cualquier consulta no duden en escribir a mi correo, respondo mas rpido con el de Hotmail. Suerte a todos.

Ing. Fernando Luque Snchez Trujillo - Per

Espacios de nombres usados en el cdigo de este artculo:


System.Windows.Forms

El Control ListView (II)


Uso de la Vista Details
Fecha: 16/Jun/2005 (16 de Junio de 2005) Autor: Ing. Fernando Luque Snchez DCE 4 Estrellas fls2307@hotmail.com

Sres. Desarrolladores, les envio otro ejercicio de ListView, este es mas completo, que el anterior publicado, el link del anterior es el siguiente: http://www.elguille.info/colabora/NET2005/FernandoLuque_Control_ListView.htm, en este artculo us estructuras junto con el control LstView.

UN POCO DE TEORIA (la misma del aporte anterior)


El control ListView es un control de lista que tiene mucha versatilidad, se puede utilizar hasta en 4 vistas diferentes: LargeIcon, Details, SmallIcon y List (Iconos grandes, Detalle, Iconos pequeos y Lista). Las mismas opciones estn incluidas en el botn Vistas del Explorador de Windows. El control ListView se usa generalmente ligado a una o dos Listas de Imagenes includas en controles ImageList, estos permiten mostrar los conos de cada elemento cuando se selecciona las opciones de LargeIcon y SmallIcon. El control ListView presenta una lista de elementos que son heredados de la clase ListViewItem, cada uno de estos elementos a su vez tiene Subelementos (SubItems), que van relacionados con el ListViewItem respectivo.En la vista Detalle (propiedad

View en la opcin Details) permite mostrar el control con los ListViewItem y los SubItems respectivos en una cuadricula similar a un control Grid (control DataGrid). En esta vista se muestran los encabezados de cada columna (coleccin Columns) donde podemos asignar nombres a las mismas, un texto que se mostrar en cada una asi como el ancho. Como en todo control de Lista los elementos del control ListView se agregan a la coleccin Items. Pueden visitar los enlaces http://www.elguille.info/colabora/NET2005/FernandoLuque_El_Control_ComboBox.ht m para el control ComboBox http://www.elguille.info/colabora/NET2005/FernandoLuque_El_Control_ListBox.htm para el control ListBox .

EL EJEMPLO
Este ejemplo es muy similar al anterior, pero aqui no se manejan los datos con estructuras, dejo a criterio de ustedes desarrolladores la eleccin de como implementar su uso. A continuacin sigue cdigo en Visual Basic
'Las consistencias para el ingreso de datos no estn creadas Private Sub Agregar(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cmdAgregar.Click Dim lvItem As ListViewItem lvItem = New ListViewItem(txtcodigo.Text) lvItem.SubItems.Add(txtnombre.Text) lvItem.SubItems.Add(txtdni.Text) lvItem.SubItems.Add(txtdireccion.Text) 'Insertar el ListViewItem al control ListView lsvDatos.Items.Add(lvItem) End Sub

Private Sub Eliminar(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cmdEliminar.Click Dim i As Integer With lsvDatos For i = .SelectedItems.Count - 1 To 0 Step -1 .Items.Remove(.SelectedItems.Item(i)) Next End With End Sub

El cdigo completo est en el archivo adjunto, voten por mi PanoramaBox para que me den mas aliento para seguir publicando. Suerte a todos.

Ing. Fernando Luque Snchez CIP 61806 DCE 4 Estrellas

Espacios de nombres usados en el cdigo de este artculo:


System.Windows.Forms

ListView Avanzado
Uso de Vistas Manejo de los datos del Item seleccionado
Fecha: 28/Junio/2005 (28 de Junio de 2005) Autor: Ing. Fernando Luque Snchez - DCE 4 Estrellas

fls2307@hotmail.com

Sres. Desarrolladores, este ejemplo trata de mostrar el uso del control ListView, adems de incluir un ContextMenu para permitir al usuario seleccionar la Vista que desee de este. Lo artculos antes publicados respecto a este mismo control son:
El control ListView Parte I: http://www.elguille.info/colabora/NET2005/FernandoLuque_Control_ListView.htm El control ListView (II): http://www.elguille.info/colabora/NET2005/FernandoLuque_Control_ListViewII.ht m

En una cuarta parte manejar el control enlazado a una base de datos en SQL Server y otro con el uso del control TreeView.

UN POCO DE TEORIA
El control ListView es un control muy versatil, permite mostrar un conjunto de datos de manera tabular similar al control DataGrid y tambien mostrar sus elementos con las opciones similares a las vistas del Explorador de Windows: Detalle, Iconos Grandes, Iconos Pequeos y Lista, para conseguir esto se modifica la propiedad View. El Control ListView se puede enlazar al control ImageList para determinar el cono de cada elemento, tanto para las opciones de Vista: Iconos Grandes e Iconos Pequeos, las propiedades a cambiar son LargeImageList para Iconos Grandes y SmallImageList para Iconos Pequeos. Algunas propiedades importantes:

Propiedad AllowColumnReorder CheckBoxes FullRowSelect GridLines MultiSelect View LabelEdit Columns Items SubItems

Descripcin Indica si el usuario puede reordenar las columnas Indica si se muestran casillas de verificacin Indica si al seleccionar un Item se marcan todos los SubItems del elemento seleccionado Muestra las lneas en la vista Details Permite la seleccin de Multiples Items Cambia la Vista Permite que el usuario modique directamente las etiquetas de los elementos. Columnas que se mostrarn en la vista Detalle (Details) Identificador de cada elementos del ListView Conjunto de elementos que dependen del Item

NUESTRO EJEMPLO
En el ejemplo que comparto con ustedes les incluyo dos controles ListView, el primero con 4 elementos includos con la vista Detalle por defecto, este primer ListView tiene especificados las propiedades SmallImageList y LargeImageList y tambin un men contextual para cambiar la vista del control. El botn Copiar copia los elementos seleccionados a un array y luego los incluye en el segundo ListView, si bien es cierto pueden hacerlo directamente, hago esto debido a una consulta que me hicieron por el correo, COMO PUEDO COPIAR LOS DATOS DEL LISTVIEW A OTRO FORMULARIO?, me parece que contanto con un array definido en un mdulo es sumamente sencillo conseguir esto. En otro envio trabajar con datos extraido de una base de datos de SQL Server. A continuacin sigue cdigo en Visual Basic:
Private Sub Cargar(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load LlenarListview() FormatoGridCopiados() End Sub 'Procedimiento para formatear el ListView Sub LlenarListview() lsvDatos.GridLines = True lsvDatos.FullRowSelect = True

'Encabezados lsvDatos.Columns(0).Text = "Id. Empleado" lsvDatos.Columns(1).Text = "Nombre" lsvDatos.Columns(2).Text = "Edad" lsvDatos.Columns(3).Text = "Direccin" 'Ancho de cada Columna lsvDatos.Columns(0).Width = 100 lsvDatos.Columns(1).Width = 200 lsvDatos.Columns(2).Width = 50 lsvDatos.Columns(2).TextAlign = HorizontalAlignment.Right lsvDatos.Columns(3).Width = 280 'Llenar algunos Items en el ListView 'EN LA PARTE PRACTICA...REAL LOS SACAMOS DE UN DataTable 'Los datos de la familia....la razn de mi esfuerzo 'con esas direcciones no me encontrarn.....je,je,je... lsvDatos.Items.Add("FL3049", 0) lsvDatos.Items(0).SubItems.Add("Ing. Fernando Luque Snchez") lsvDatos.Items(0).SubItems.Add("39") lsvDatos.Items(0).SubItems.Add("Av. Brasil 567 Lima") lsvDatos.Items.Add("CVA049", 1) lsvDatos.Items(1).SubItems.Add("Carolina Villacorta de Luque") lsvDatos.Items(1).SubItems.Add("39") lsvDatos.Items(1).SubItems.Add("Av. Angamos Oeste 466")

lsvDatos.Items.Add("FLV456", 2) lsvDatos.Items(2).SubItems.Add("Fernando Luque Villacorta") lsvDatos.Items(2).SubItems.Add("8") lsvDatos.Items(2).SubItems.Add("Av. Larco 906 Miraflores") lsvDatos.Items.Add("MFL012", 3) lsvDatos.Items(3).SubItems.Add("Mara Fernanda Luque Villacorta") lsvDatos.Items(3).SubItems.Add("4") lsvDatos.Items(3).SubItems.Add("Canaval y Moreyra 499 La Molina") End Sub Sub FormatoGridCopiados() lsvSelec.GridLines = True lsvSelec.FullRowSelect = True 'Encabezados lsvSelec.Columns(0).Text = "Id. Empleado" lsvSelec.Columns(1).Text = "Nombre" lsvSelec.Columns(2).Text = "Edad" lsvSelec.Columns(3).Text = "Direccin" 'Ancho de cada Columna lsvSelec.Columns(0).Width = 100 lsvSelec.Columns(1).Width = 200 lsvSelec.Columns(2).Width = 50 lsvSelec.Columns(2).TextAlign = HorizontalAlignment.Right lsvSelec.Columns(3).Width = 280 End Sub

El cdigo completo est en el archivo adjunto. Recuerda votar en mi PanoramaBox, los puntos me alientan a seguir publicando, y gracias a ustedes por su preferencia. Suerte a todos

Ing. Fernando Luque Snchez CIP 61806 Trujillo - Per

Espacios de nombres usados en el cdigo de este artculo:


System.Windows.Forms

Manejo del ListView


Introduccin
Este es un ejemplo de cmo utilizar el componente Listview de CSharp. En este artculo te muestro como agregar y eliminar datos a dicho componente, y tambin el uso de TimeSpan, que en este ejemplo lo utilizo para calcular la edad. Bueno espero que les sea de su utilidad.

Diseo del Formulario

Nota: Agregar un Label y en su propiedad Name colocar lblcodigo y en la propiedad Text colocar el valor 1, esto nos permitir autogenerar el cdigo.

Ac les muestro el Cdigo:


using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Text; System.Windows.Forms;

namespace WindowsApplication2 { public partial class FrmListView : Form { public FrmListView() { InitializeComponent(); } //El Label lblcodigo est oculto, y en su propiedad text colocar 1 para poder generar //el cdigo... private void btnagregar_Click(object sender, EventArgs e) { int edad; string f1; f1 = dtfecnaci.Value.ToShortDateString(); TimeSpan diferencia = Convert.ToDateTime(DateTime.Now.ToShortDateString()) - Convert.ToDateTime(f1); edad = Convert.ToInt16(diferencia.Days.ToString()) / 365; //aca obtengo la edad ListViewItem elemeneto = new ListViewItem(); elemeneto = listView1.Items.Add(lblcodigo.Text); elemeneto.SubItems.Add(txtapellidos.Text); elemeneto.SubItems.Add(txtnombres.Text); elemeneto.SubItems.Add(edad.ToString()); elemeneto.SubItems.Add(txtelefono.Text); elemeneto.SubItems.Add(cbosexo.Text); Limpiar(); GeneraCodigo(); } private void FrmListView_Load(object sender, EventArgs e) { listView1.Columns.Add("Cdigo", 70, HorizontalAlignment.Left); listView1.Columns.Add("Apellidos", 150, HorizontalAlignment.Left); listView1.Columns.Add("Nombre(s)", 150, HorizontalAlignment.Left); listView1.Columns.Add("Edad", 50, HorizontalAlignment.Left); listView1.Columns.Add("Telfono", 80, HorizontalAlignment.Left);

listView1.Columns.Add("Sexo", 90, HorizontalAlignment.Left); listView1.View = View.Details; } private void Limpiar() { foreach (Control obj in this.groupBox1.Controls) { if (obj is TextBox) { obj.Text = ""; } txtapellidos.Focus(); } } private void GeneraCodigo() { int c; int nuevo; string elemento; c = listView1.Items.Count - 1; elemento = listView1.Items[c].Text.ToString(); nuevo = Convert.ToInt16(elemento) + 1; lblcodigo.Text = nuevo.ToString(); } private void SoloLetras(object sender, KeyPressEventArgs e) { int keyascii = Convert.ToInt32(e.KeyChar); if ((keyascii >= 65 && keyascii <= 90) || (keyascii >= 97 && keyascii <= 122) || (keyascii == 32) || (keyascii == 8)) { e.Handled = false; } else { e.Handled = true; } } private void SoloNumeros(object sender, KeyPressEventArgs e) { int keyascii = Convert.ToInt32(e.KeyChar); if ((keyascii >= 48 && keyascii <= 57) || (keyascii == 8)) { e.Handled = false; } else { e.Handled = true; } } private void btneliminar_Click(object sender, EventArgs e) { int numindex = listView1.Items.Count - 1;

if (listView1.Items.Count>0) { listView1.Items.Remove(listView1.Items[numindex]); } if (Convert.ToInt16(listView1.Items.Count) == 0) { lblcodigo.Text = "1"; } } private void button1_Click(object sender, EventArgs e) { this.Close(); } } }

Вам также может понравиться