Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: |Miguel| en 17 Abril 2012, 17:09 pm



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:

Código
  1. Public Sub actualizar()
  2.        If validar() Then
  3.            Dim posicion As Integer = 0
  4.            Dim nombre As String = txtNombre.Text
  5.            Dim apellidos As String = txtApellidos.Text
  6.            Dim mandarInformacion As Boolean = chkMandarInformacion.CheckState
  7.            Dim analizarRiesgo As Boolean = chkAnalizarRiesgo.CheckState
  8.            Dim direccion As String = txtDireccion.Text
  9.            Dim codigoPostal As String = txtCodigoPostal.Text
  10.            Dim persona As Cliente = New Cliente(nombre, apellidos, mandarInformacion, analizarRiesgo, direccion, codigoPostal)
  11.  
  12.            If Not buscarCliente(persona, posicion) Then
  13.                lstListaDeClientes.Items.Add(persona)
  14.                lstListaDeClientes.SelectedIndex = lstListaDeClientes.Items.Count - 1
  15.            Else
  16.                lstListaDeClientes.Items.Item(posicion) = persona
  17.            End If
  18.        End If
  19.    End Sub
  20.  
  21.    Public Function buscarCliente(ByVal persona As Cliente, ByRef i As Integer) As Boolean
  22.        Dim ok As Boolean = False
  23.  
  24.        For Each cli As Cliente In lstListaDeClientes.Items
  25.            If persona.apellidos.Trim.Equals(cli.apellidos.Trim) AndAlso persona.nombre.Trim.Equals(cli.nombre.Trim) Then
  26.                ok = True
  27.                lstListaDeClientes.SelectedItem = cli
  28.                Exit For
  29.            End If
  30.            i += 1
  31.        Next
  32.  
  33.        'For i = 0 To lstListaDeClientes.Items.Count - 1
  34.        '    If lstListaDeClientes.Items.Count > 0 Then
  35.        '        lstListaDeClientes.SelectedIndex = i
  36.        '    End If
  37.        '    If persona.apellidos.Trim.Equals(lstListaDeClientes.Items.Item(i).apellidos.Trim) _
  38.        '            AndAlso persona.nombre.Trim.Equals(lstListaDeClientes.Items.Item(i).nombre.Trim) Then
  39.        '        ok = True
  40.        '        Exit For
  41.        '    End If
  42.        'Next
  43.        Return (ok)
  44.    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.

Código
  1. Dim Array() As String ,cadena As Variant 'modifique la variable,  variant y no a string
  2. ReDim Array(1) ' redimensiono 2 posiciones
  3.  
  4. Array(0) = "Rembolso"
  5. Array(1) = "I'm sexy and kanowit"
  6.  
  7. For Each cadena In Array
  8. MsgBox(cadena )
  9. 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:

Código
  1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
  2.        Try
  3.            For Each elemento As String In ListBox1.Items
  4.                If elemento.Contains("Elhacker.net") Then 'si el elemento del listbox contiene la variable que almacena el nombre del cliente...
  5.                    ListBox1.SelectedIndex = ListBox1.Items.IndexOf(elemento) 'nos posicionamos en éste
  6.                End If
  7.            Next
  8.        Catch ex As Exception
  9.        End Try
  10.    End Sub
  11.  

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.