Título: Recorrer ListBox con ForEach y posicionarme
Publicado por: |Miguel| en 17 Abril 2012, 17:09 pm
Hola a todos, ¿qué tal? Bueno, os cuento. Tengo un formulario que tiene una lista de clientes en una ListBox que contiene items de una clase mía que he llamado Cliente. Tengo una función buscar que busca clientes repetidos para actualizar o insertar uno nuevo según el caso. Este es el framento de código: Public Sub actualizar() If validar() Then Dim posicion As Integer = 0 Dim nombre As String = txtNombre.Text Dim apellidos As String = txtApellidos.Text Dim mandarInformacion As Boolean = chkMandarInformacion.CheckState Dim analizarRiesgo As Boolean = chkAnalizarRiesgo.CheckState Dim direccion As String = txtDireccion.Text Dim codigoPostal As String = txtCodigoPostal.Text Dim persona As Cliente = New Cliente(nombre, apellidos, mandarInformacion, analizarRiesgo, direccion, codigoPostal) If Not buscarCliente(persona, posicion) Then lstListaDeClientes.Items.Add(persona) lstListaDeClientes.SelectedIndex = lstListaDeClientes.Items.Count - 1 Else lstListaDeClientes.Items.Item(posicion) = persona End If End If End Sub Public Function buscarCliente(ByVal persona As Cliente, ByRef i As Integer) As Boolean Dim ok As Boolean = False For Each cli As Cliente In lstListaDeClientes.Items If persona.apellidos.Trim.Equals(cli.apellidos.Trim) AndAlso persona.nombre.Trim.Equals(cli.nombre.Trim) Then ok = True lstListaDeClientes.SelectedItem = cli Exit For End If i += 1 Next 'For i = 0 To lstListaDeClientes.Items.Count - 1 ' If lstListaDeClientes.Items.Count > 0 Then ' lstListaDeClientes.SelectedIndex = i ' End If ' If persona.apellidos.Trim.Equals(lstListaDeClientes.Items.Item(i).apellidos.Trim) _ ' AndAlso persona.nombre.Trim.Equals(lstListaDeClientes.Items.Item(i).nombre.Trim) Then ' ok = True ' Exit For ' End If 'Next Return (ok) End Function
pero al que manda se le ha puesto entre ceja y ceja 1º que use for each en lugar del for y después que me cargue la i... y no sé hacerlo sin ella... ¿ayuda? Gracias.
Título: Re: Recorrer ListBox con ForEach y posicionarme
Publicado por: rembolso en 17 Abril 2012, 23:57 pm
mira con el FOR EACH estas recorriendo un Array de datos, yo te aconsegaria que uses arrays de datos y utilices el listview para la visualización de ella. te dejo un ejemplo para que no estes tan perdido. Dim Array() As String ,cadena As Variant 'modifique la variable, variant y no a string ReDim Array(1) ' redimensiono 2 posiciones Array(0) = "Rembolso" Array(1) = "I'm sexy and kanowit" For Each cadena In Array MsgBox(cadena ) Next
nota: estas en .net ?
Título: Re: Recorrer ListBox con ForEach y posicionarme
Publicado por: raul338 en 18 Abril 2012, 04:34 am
Che yo movi este tema a .net, ... o sera que el js me devolvio que se movio y no hizo nada :xD
Título: Re: Recorrer ListBox con ForEach y posicionarme
Publicado por: kub0x en 18 Abril 2012, 12:22 pm
Es fácil.. recorres el listbox con un bucle for each que obtenga cada elemento de Items por cada iteracción... Ejemplo: Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Try For Each elemento As String In ListBox1.Items If elemento.Contains("Elhacker.net") Then 'si el elemento del listbox contiene la variable que almacena el nombre del cliente... ListBox1.SelectedIndex = ListBox1.Items.IndexOf(elemento) 'nos posicionamos en éste End If Next Catch ex As Exception End Try End Sub
Saludos.
Título: Re: Recorrer ListBox con ForEach y posicionarme
Publicado por: |Miguel| en 18 Abril 2012, 19:11 pm
Sí, estoy en .net. No había visto el subforo lo siento.
Bueno, gracias a todos. Me ha servido para hacer lo que me pedían, presentarlo al jefe y que me dijera que lo dejaba como estaba al principio... ¬¬
En fin, gracias.
|