Está en la página 1de 9

Listview

El control ListView de formularios Windows Forms muestra una lista de


elementos con iconos. Puede utilizar una vista de lista para crear una
interfaz de usuario similar al panel derecho del Explorador de Windows.
El control tiene cuatro modos de vista: LargeIcon, SmallIcon, List y
Details. El modo LargeIcon muestra iconos grandes junto al texto de los
elementos; si el control es lo suficientemente grande, los elementos
aparecen en varias columnas. El modo SmallIcon es igual, pero muestra
iconos pequeños. El modo List muestra iconos pequeños, pero siempre
en una sola columna. El modo Details muestra los elementos en varias
columnas.

La propiedad clave del control ListView es Items, que contiene los


elementos que muestra el control. La propiedad

SelectedItems contiene la colección de elementos seleccionados


actualmente en el control. Si la propiedad MultiSelect se establece en
true, el usuario puede seleccionar varios elementos, por ejemplo,
para arrastrar y colocar en otro control varios elementos a la vez. Si
la propiedad CheckBoxes se establece en true, el control ListView puede
mostrar casillas de verificación junto a los elementos.La propiedad
Activation determina el tipo de acción que debe realizar el usuario para
activar los elementos de la lista: las opciones son Standard, OneClick
y TwoClick. La activación OneClick necesita un solo clic para
activar el elemento. La activación TwoClick requiere que el usuario
haga doble clic para activar el elemento; un solo clic cambia el color del
texto del elemento. La activación Standard requiere que el usuario
haga doble clic para activar un elemento, pero la apariencia del
elemento no cambia.

Empleando la BDD BDventas(Clientes, Fac_cabe, Fac_deta,artículos)


realizar el formulario:
Listbox1

LISTVIEW1
Configurando el ListView

Codificacion del Formulario


Imports System.data
Imports System.Data.SqlClient
Public Class Form1
Dim cn As New SqlConnection("Server=localhost;Integrated
Security=SSPI;database=ventas")
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Mostrar los empleados
Dim da As New SqlDataAdapter("Select cod_emp,nombre from empleado", cn)
Dim tbl As New DataTable
da.Fill(tbl) ListBox1.DataSource = tbl
ListBox1.DisplayMember = "nombre"
ListBox1.ValueMember = "cod_emp"
Call formatoListview1()
End Sub

Sub formatoListview1()
'dando formato al listview
With ListView1
.Items.Clear()
.View = View.Details
.Columns.Add("Factura", 80, HorizontalAlignment.Left)
.Columns.Add("Sub Total", 80, HorizontalAlignment.Left)
.Columns.Add("Igv", 80, HorizontalAlignment.Left)
.Columns.Add("Total", 80, HorizontalAlignment.Left)
.GridLines = True
.FullRowSelect = True
End With
End Sub

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal


e As
System.EventArgs) Handles ListBox1.SelectedIndexChanged
'Mostrar las 5 ordenes con mayor igv
Try 'controlador de errores
Dim codigo As String = ListBox1.SelectedValue
Dim cadsql As String = "Select top 5 Num_fact,sub_total,igv,total " & _
" from facturas Where cod_emp=@codigo"
Dim cmd As New SqlCommand(cadsql, cn)
cmd.CommandType = CommandType.Text cn.Open()
cmd.Parameters.Add("@codigo", SqlDbType.Char, 5).Value = codigo
Dim dr As SqlDataReader = cmd.ExecuteReader
If dr.HasRows = True Then
ListView1.Items.Clear()
Dim LstItem As ListViewItem

While dr.Read
LstItem = ListView1.Items.Add(dr(0).ToString)
LstItem.SubItems.Add(dr(1).ToString)
LstItem.SubItems.Add(dr(2).ToString)
LstItem.SubItems.Add(dr(3).ToString)
End While
End If
lblcantreg.Text = ListView1.Items.Count
Catch ex As Exception
Finally cn.Close()
End Try
End Sub

Private Sub ListView1_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles ListView1.Click
'Mostrando los datos de la columna
With ListView1
Dim factura As String = .Items.Item(.SelectedIndices(0)).Text
Dim subtotal As String = .Items.Item(.SelectedIndices(0)).SubItems(1).Text
MessageBox.Show(factura & " - " & subtotal)
End With
End Sub
End Class

Las Tablas de la base de datos Ventas


CREATE TABLE Empleado(
cod_emp char(5) Not NULL ,
nombre varchar(25) Not NULL ,
cargo varchar(20) NULL ,

CREATE TABLE Facturas (


num_fact char(6) Not Null,
cod_emp char(5),
cod_cli char(5),
sub_total decimal(8,2),
igv decimal(8,2),
total decimal(8,2),
fecha datetime,
)
Llenar datos consistentes

AddHandler (Instrucción)

Asocia un evento a un controlador de eventos en tiempo de ejecución.

AddHandler event, AddressOf eventhandler

Partes

event Nombre del evento que se va a controlar.


Eventhandler Nombre del procedimiento que controlará el evento.

Comentarios

Las instrucciones AddHandler y RemoveHandler permiten iniciar y detener el


controlador del evento en cualquier momento de la ejecución del programa.

La firma del procedimiento eventhandler debe coincidir con la firma del evento event.

La palabra clave Handles y la instrucción AddHandler permiten especificar que


ciertos procedimientos controlen eventos determinados, pero hay diferencias entre
ambos. La instrucción AddHandler conecta los procedimientos a los eventos en
tiempo de ejecución. Utilice la palabra clave Handles al definir un
procedimiento para especificar que controla un evento determinado. Para obtener
más información, vea Handles.

En los eventos personalizados, la instrucción AddHandler invoca al descriptor de


acceso AddHandler del evento. Para obtener más información sobre eventos
personalizados, vea Event (Instrucción).

Ejemplo

Sub TestEvents()

Dim Obj As New Class1

' Associate an event handler with an event. AddHandler Obj.Ev_Event, AddressOf


EventHandler

' Call the method to raise the event. Obj.CauseSomeEvent()

' Stop handling events.

RemoveHandler Obj.Ev_Event, AddressOf EventHandler

' This event will not be handled. Obj.CauseSomeEvent()

End Sub

Sub EventHandler()

' Handle the event. MsgBox("EventHandler caught event.")

End Sub

Public Class Class1

' Declare an event. Public Event Ev_Event() Sub CauseSomeEvent()


' Raise an event. RaiseEvent Ev_Event()

End Sub

End Class

RemoveHandler (Instrucción)

Quita la asociación entre un evento y un controlador de eventos.

RemoveHandler event, AddressOf eventhandler

Partes

event

Nombre del evento que se va a controlar.

eventhandler

Nombre del procedimiento que controla actualmente el evento.

Comentarios

Las instrucciones AddHandler y RemoveHandler permiten iniciar y detener el


control del evento de un evento específico en cualquier momento de la ejecución
del programa.

Para los eventos personalizados, la instrucción RemoveHandler llama al


descriptor de acceso RemoveHandler del evento. Para obtener más información
sobre eventos personalizados, vea Event (Instrucción).

Ejemplo

Sub TestEvents()

Dim Obj As New Class1

' Associate an event handler with an event. AddHandler Obj.Ev_Event, AddressOf


EventHandler

' Call the method to raise the event. Obj.CauseSomeEvent()

' Stop handling events.

RemoveHandler Obj.Ev_Event, AddressOf EventHandler

' This event will not be handled. Obj.CauseSomeEvent()

End Sub

Sub EventHandler()
' Handle the event. MsgBox("EventHandler caught event.")

End Sub

Public Class Class1

' Declare an event. Public Event Ev_Event() Sub CauseSomeEvent()

' Raise an event. RaiseEvent Ev_Event()

End Sub

End Class

Veamos un ejemplo con el llenado de datos en un ComboBox, mediante el


evento form1_load, y llamando a la vez al evento SelectedIndexChanged del
ComboBox.

Al momento de llenar el ComboBox1 en el evento Form1_Load,


usted evitara llamar al evento SelectedIndexChanged con la finalidad
de mostrar datos erróneos, debido a que se esta asignando objetos y
campos en sus propiedades.

Imports System.Data

Imports System.Data.Sqlclient

Public Class Form1

Dim cn As New SqlConnection("Server=localhost;Integrated


Security=SSPI;database=NorthWind")

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles

MyBase.Load

MostrarOrdenes()

End Sub

Sub MostrarOrdenes()

RemoveHandler ComboBox1.SelectedIndexChanged, _ AddressOf


ComboBox1_SelectedIndexChanged

Dim da As New SqlDataAdapter("Select CustomerID,CompanyName From


Customers", cn) Dim tbl As New DataTable
da.Fill(tbl)

ComboBox1.DataSource = tbl ComboBox1.DisplayMember = "CompanyName"


ComboBox1.ValueMember = "CustomerID"

AddHandler ComboBox1.SelectedIndexChanged, _

AddressOf ComboBox1_SelectedIndexChanged

End Sub

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object,


ByVal e As

System.EventArgs) Handles ComboBox1.SelectedIndexChanged

Dim da As New SqlDataAdapter("Select OrderID From Orders Where


CustomerID='" & ComboBox1.SelectedValue

& "'", cn)

Dim tbl As New DataTable da.Fill(tbl) ListBox1.DataSource = tbl

ListBox1.DisplayMember = "OrderID"

End Sub

End Class

También podría gustarte