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
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.