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.
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 ?
Che yo movi este tema a .net, ... o sera que el js me devolvio que se movio y no hizo nada :xD
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.
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.