viernes, 5 de octubre de 2012

Eliminar duplicados de un listbox en VB.NET

Simple función en vb.net que recorre todos los elementos de la lista de un
combo o listbox para poder eliminar los elementos o items duplicados
El ejemplo comienza comparando desde el primer item con todos los demás
empezando desde abajo hacia arriba. Si el elemento es el mismo lo elimina con el
método RemoveAt del ListBox indicando el índice
Colocar en el formulario
  1. Un control ListBox llamado Listbox1
  2. Un control Button llamado Button1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        With ListBox1.Items
            .Add("1")
            .Add("2")
            .Add("3")
            .Add("1")
            .Add("2")
            .Add("3")
            ListBox1.SelectedIndex = 0
        End With
        Button1.Text = "Eliminar duplicados "
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MsgBox(Eliminar(ListBox1), MsgBoxStyle.Information, "Elementos duplicados en el List ")
    End Sub
    Function Eliminar(ByVal LB As ListBox) As Int32
        Dim i As Int32
        Dim j As Int32
        Dim n As Int32           ' Recorre los items ( compara empezando desde el primero , de abajo hacia arriba)         
        For i = 0 To LB.Items.Count - 2
            For j = LB.Items.Count - 1 To i + 1 Step -1                 ' ... si es el mismo                 
                If LB.Items(i).ToString = LB.Items(j).ToString Then
                    LB.Items.RemoveAt(j) ' elimina el elemento indicando el índice                     
                    n += 1 'lleva la cuenta de los duplicados                 
                End If
            Next
        Next
        Return n ' retorna los eliminados     End Function End Class 
    End Function

3 comentarios:

  1. EXELENTE EJEMPLO, Y COMO ESTE ARIA CON UN DATAGRIDVIEW, QUE ELIMINE LAS FILAS DUPLICADAS

    ResponderEliminar
  2. gracias!!!!! XSaint es lo q necesitaba


    Dim i As Integer
    Dim j As Integer
    Dim n As Integer


    For i = 0 To dgv1.Rows.Count - 2
    For j = dgv1.Rows.Count - 1 To i + 1 Step -1
    If dgv1.Rows(i).Cells(0).Value = dgv1.Rows(j).Cells(0).Value Then
    dgv1.Rows.RemoveAt(j)
    n += 1
    End If
    Next
    Next

    ResponderEliminar
  3. Eliminar Duplicados De Un Listbox En Vb.Net ~ Buscamos Ser Diferentes >>>>> Download Now

    >>>>> Download Full

    Eliminar Duplicados De Un Listbox En Vb.Net ~ Buscamos Ser Diferentes >>>>> Download LINK

    >>>>> Download Now

    Eliminar Duplicados De Un Listbox En Vb.Net ~ Buscamos Ser Diferentes >>>>> Download Full

    >>>>> Download LINK Ho

    ResponderEliminar