locked
Quitar datos de un LitBox con contenido de otro RRS feed

  • Pregunta

  • Saludos tengo un listado de un listbox1, en otro listbox2 tengo los mismo datos y con otros mas, la pregunta es como poder eliminar los datos del listbox2 y dejar los datos que no se parezcan al listbox1, gracias.

    miércoles, 6 de mayo de 2020 23:41

Respuestas

  • Hola:
    Las preguntas (a ser posible) se hacen con TODOS los requerimientos posibles porque sino es imposible finalizar un hilo si se van añadiendo cosas NO expuestas anteriormente.
    Para seguir la logica del ejemplo, solo te dire que los ficheros txt los tienes que cargar en sendos datatables y estos datatables en los ListBox.
    Esa tarea te la dejo para ti (algo tendras que aportar)

    Un saludo desde Bilbo
    Carlos
    lunes, 11 de mayo de 2020 16:09

Todas las respuestas

  • Hola:
    En un Form como el de la imagen

    Copia y pega el siguiente codigo

    Option Strict On
    Option Explicit On
    Public Class Form3
        Private mdtDataTable1 As New DataTable
        Private mdtDataTable2 As New DataTable
        Private mdtDataTable3 As New DataTable
        Private Sub Form3_Load(sender As Object, e As EventArgs) Handles Me.Load
            'Añadir columna al datatable
            mdtDataTable1.Columns.Add(New DataColumn("numero", Type.GetType("System.Int32")))
            mdtDataTable2.Columns.Add(New DataColumn("numero", Type.GetType("System.Int32")))
            mdtDataTable3.Columns.Add(New DataColumn("numero", Type.GetType("System.Int32")))
            'Añadir datos a los 2 primeros
            Dim lDataRow As DataRow
            lDataRow = mdtDataTable1.NewRow
            lDataRow.Item("numero") = 1
            ' Agregamos el registros a la colección Rows
            mdtDataTable1.Rows.Add(lDataRow)
            lDataRow = mdtDataTable1.NewRow
            lDataRow.Item("numero") = 3
            mdtDataTable1.Rows.Add(lDataRow)
            lDataRow = mdtDataTable1.NewRow
            lDataRow.Item("numero") = 5
            mdtDataTable1.Rows.Add(lDataRow)
            lDataRow = mdtDataTable1.NewRow
            lDataRow.Item("numero") = 7
            mdtDataTable1.Rows.Add(lDataRow)
            lDataRow = mdtDataTable1.NewRow
            lDataRow.Item("numero") = 9
            mdtDataTable1.Rows.Add(lDataRow)
            '
            lDataRow = mdtDataTable2.NewRow
            lDataRow.Item("numero") = 1
            mdtDataTable2.Rows.Add(lDataRow)
            lDataRow = mdtDataTable2.NewRow
            lDataRow.Item("numero") = 2
            mdtDataTable2.Rows.Add(lDataRow)
            lDataRow = mdtDataTable2.NewRow
            lDataRow.Item("numero") = 3
            mdtDataTable2.Rows.Add(lDataRow)
            lDataRow = mdtDataTable2.NewRow
            lDataRow.Item("numero") = 4
            mdtDataTable2.Rows.Add(lDataRow)
            lDataRow = mdtDataTable2.NewRow
            lDataRow.Item("numero") = 5
            mdtDataTable2.Rows.Add(lDataRow)
            lDataRow = mdtDataTable2.NewRow
            lDataRow.Item("numero") = 6
            mdtDataTable2.Rows.Add(lDataRow)
            lDataRow = mdtDataTable2.NewRow
            lDataRow.Item("numero") = 7
            mdtDataTable2.Rows.Add(lDataRow)
            '
            With Me.ListBox1
                .DataSource = mdtDataTable1
                .DisplayMember = "numero"
            End With
            With Me.ListBox2
                .DataSource = mdtDataTable2
                .DisplayMember = "numero"
            End With
            With Me.ListBox3
                .DataSource = mdtDataTable3
                .DisplayMember = "numero"
            End With
        End Sub
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim lDataRow As DataRow
            For Each Fila As DataRow In mdtDataTable2.Rows
                If Buscar(Convert.ToInt32(Fila.Item("numero"))) = False Then
                    lDataRow = mdtDataTable3.NewRow
                    lDataRow.Item("numero") = Convert.ToInt16(Fila.Item("numero"))
                    mdtDataTable3.Rows.Add(lDataRow)
                End If
            Next
        End Sub
        Private Function Buscar(ByVal viNumero As Integer) As Boolean
            Dim Retorno As Boolean = False
            Try
                Dim Consulta = From Valor In mdtDataTable1 Where Valor.Field(Of Integer)("numero") = viNumero
                If Consulta.Count() > 0 Then
                    Retorno = True
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
            Return Retorno
        End Function
    End Class

    Un saludo desde Bilbo
    Carlos
    jueves, 7 de mayo de 2020 8:46
  • Hola!

    Para obtener los diferentes numeros, basta con almacenarlos en 2 listas y crear una tercera la cual posea aquellos que listbox1 no tenga repetidos de listbox2, pero tambien J. Carlos Herrero nos trae una solucion muy buena!

    Por favor dinos que tal te va

    Siempre es un placer atender tus consultas
    Gracias por utilisar los foros de MSDN

    Luis Diego Mora
    _____
    jueves, 7 de mayo de 2020 13:31
    Moderador
  • Hola Cael1020

     

    ¿Alguna actualización sobre la consulta realizada? ¿Alguna de las respuestas proporcionadas te ayudó?

     

    Espero tu respuesta.

     

    Gracias por usar los foros de MSDN.

     

     

    Luis Diego Mora

     

    --------------------------------------------------------------------------

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    viernes, 8 de mayo de 2020 17:02
    Moderador
  • Saludos trate de modificarlo pero no pude para rutas de paginas o palabras, no utilizando numero como poder hacerlo. 

    lista 1

    https://www.youtube.com/

    https://www.facebook.com/

    https://social.msdn.microsoft.com/

    https://www.mercadolibre.com.mx/

    https://pelisplus.me/

    Lista 2

    https://www.facebook.com/

    https://www.mercadolibre.com.mx/

    lunes, 11 de mayo de 2020 1:32
  • Hola:
    Solo hay que cambiar el tipo de numerico a caracter
    En un Form como el de la imagen

    Copia y pega el siguiente codigo


    Option Explicit On
    Option Strict On
    Public Class Form3
        Private mdtDataTable1 As New DataTable
        Private mdtDataTable2 As New DataTable
        Private mdtDataTable3 As New DataTable
        Private Sub Form3_Load(sender As Object, e As EventArgs) Handles Me.Load
            'Añadir columna al datatable
            mdtDataTable1.Columns.Add(New DataColumn("nombre", Type.GetType("System.String")))
            mdtDataTable2.Columns.Add(New DataColumn("nombre", Type.GetType("System.String")))
            mdtDataTable3.Columns.Add(New DataColumn("nombre", Type.GetType("System.String")))
            'Añadir datos a los 2 primeros
            Dim lDataRow As DataRow
            lDataRow = mdtDataTable1.NewRow
            lDataRow.Item("nombre") = "https://www.youtube.com/"
            ' Agregamos el registros a la colección Rows
            mdtDataTable1.Rows.Add(lDataRow)
            lDataRow = mdtDataTable1.NewRow
            lDataRow.Item("nombre") = "https://www.facebook.com/"
            mdtDataTable1.Rows.Add(lDataRow)
            lDataRow = mdtDataTable1.NewRow
            lDataRow.Item("nombre") = "https://social.msdn.microsoft.com/"
            mdtDataTable1.Rows.Add(lDataRow)
            lDataRow = mdtDataTable1.NewRow
            lDataRow.Item("nombre") = "https://www.mercadolibre.com.mx/"
            mdtDataTable1.Rows.Add(lDataRow)
            lDataRow = mdtDataTable1.NewRow
            lDataRow.Item("nombre") = "https://pelisplus.me/"
            mdtDataTable1.Rows.Add(lDataRow)
            '
            lDataRow = mdtDataTable2.NewRow
            lDataRow.Item("nombre") = "https://www.facebook.com/"
            mdtDataTable2.Rows.Add(lDataRow)
            lDataRow = mdtDataTable2.NewRow
            lDataRow.Item("nombre") = "https://www.mercadolibre.com.mx/"
            mdtDataTable2.Rows.Add(lDataRow)
            '
            With Me.ListBox1
                .DataSource = mdtDataTable1
                .DisplayMember = "nombre"
            End With
            With Me.ListBox2
                .DataSource = mdtDataTable2
                .DisplayMember = "nombre"
            End With
            With Me.ListBox3
                .DataSource = mdtDataTable3
                .DisplayMember = "nombre"
            End With
        End Sub
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim lDataRow As DataRow
            For Each Fila As DataRow In mdtDataTable1.Rows
                If Buscar(Convert.ToString(Fila.Item("nombre"))) = False Then
                    lDataRow = mdtDataTable3.NewRow
                    lDataRow.Item("nombre") = Convert.ToString(Fila.Item("nombre"))
                    mdtDataTable3.Rows.Add(lDataRow)
                End If
            Next
        End Sub

        Private Function Buscar(ByVal vsNombre As String) As Boolean
            Dim Retorno As Boolean = False
            Try
                Dim Consulta = From Valor In mdtDataTable2 Where Valor.Field(Of String)("nombre") = vsNombre
                If Consulta.Count() > 0 Then
                    Retorno = True
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
            Return Retorno
        End Function
    End Class

    Un saludo desde Bilbo
    Carlos
    lunes, 11 de mayo de 2020 9:12
  • Saludos y si los datos no fueran fijos, los tengo cargados en un txt y al ultimo ya tenga mi lista e inicie un scaneo.

    ListBox1.Items.AddRange(System.IO.File.ReadAllLines("C:\DATOS\LISTA1.txt"))
    
    ListBox2.Items.AddRange(System.IO.File.ReadAllLines("C:\DATOS\LISTA2.txt"))

    lunes, 11 de mayo de 2020 15:20
  • Hola:
    Las preguntas (a ser posible) se hacen con TODOS los requerimientos posibles porque sino es imposible finalizar un hilo si se van añadiendo cosas NO expuestas anteriormente.
    Para seguir la logica del ejemplo, solo te dire que los ficheros txt los tienes que cargar en sendos datatables y estos datatables en los ListBox.
    Esa tarea te la dejo para ti (algo tendras que aportar)

    Un saludo desde Bilbo
    Carlos
    lunes, 11 de mayo de 2020 16:09