none
Dividir datos en de una Listbox en otras Listbox RRS feed

  • Pregunta

  • Saludos como podría dividir unos 150 datos que tengo en una listbox y poderla dividir en otras tres listbox

    es decir un boton que de la orden de que los 150 datos se dividan en 3 y se valla a listbox1, listbox2 y listbox3, si es divisible en numero de datos se valla a las lista, si no es asi, me diga que no es posible dividir.  


    • Editado Cael1020 domingo, 3 de marzo de 2019 6:52
    domingo, 3 de marzo de 2019 6:44

Todas las respuestas

  • Bien, primero calculemos la cantidad de items que hay que enviar a cada listbox. Supongamos que el original es el listbox0 y que queremos cargar los listbox1, listbox2 y listbox3.

    El número inicial de elementos es:

    Dim nTotal As Integer = listBox0.Items.Count

    Para comprobar si es múltiplo de 3:

    if nTotal Mod 3 <> 0 Then ... 'Presentar mensaje de error

    Suponiendo que sí que sea múltiplo de 3, el número de elementos a trasladar a cada listbox es:

    Dim nTrasladar As Integer = nTotal \ 3

    Entonces, movemos ese número a cada listbox. Podemos usar LINQ (recuerda comprobar que tienes el correpondiente Imports):

    listBox1.Items.AddRange(listBox0.Items.Take(nTrasladar))
    
    listBox2.Items.AddRange(listBox0.Items.Skip(nTrasladar).Take(nTrasladar))
    
    listBox3.Items.AddRange(listBox0.Items.Skip(2 * nTrasladar))
    

     

    domingo, 3 de marzo de 2019 15:06
  • Haber si entendí algo así lo puse me marca errores, saludos gracias por quererme ayudar.

    Public Class DIVIDIR_LISTAS
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim nTotal As Integer = ListBox1.Items.Count
    
            If nTotal Mod 3 <> 0 Then  'Presentar mensaje de error
            Dim nTrasladar As Integer = nTotal \ 3
    
    ListBox1.Items.AddRange(ListBox2.Items.Take(nTrasladar))
    
            ListBox2.Items.AddRange(ListBox3.Items.Skip(nTrasladar).Take(nTrasladar))
    
            ListBox3.Items.AddRange(ListBox4.Items.Skip(2 * nTrasladar))
    
            End If
    
        End Sub
    End Class
    

    domingo, 3 de marzo de 2019 18:24
  • Haber si entendí algo así lo puse me marca errores

    Siempre lo decimos en el foro, pero tengo que insistir en ello: Nunca se debe decir "me marca errores". Hay que decir cuál es el error. Copiar el mensaje de error exacto, completo y detallado, señalando en el fuente la línea exacta en la que se produce.

    Segundo: Has copiado literalmente el pedazo que decía "Presentar mensaje de error". Lo que tenías que hacer era quitar eso y en su lugar escribir el código que quieras usar para presentar un mensaje de error. Si no lo haces, el programa resultante es incorrecto y dará errores. El EndIf tiene que ir justo detrás de ese mensaje de error (si lo escribes en varias líneas en lugar de ponerlo detrás del Then), no al final de toda la subrutina como lo has puesto.

    Tercero: Te dará un error en todas las sentencias que usan LINQ si no has seguido las instrucciones de la respuesta original en las que se decía "recuerda comprobar que tienes el correspondiente Imports". No se ve en tu código dónde has puesto el Imports, me imagino que lo habrás añadido por fuera o en las propiedades del proyecto. Si no lo has hecho, desde luego dará errores y no funcionará.

    Eso son solo algunas cosas que veo a simple vista. Puede que haya más errores. Si hubieras puesto el mensaje de error habría sido mucho más fácil determinar qué es lo que falla.

    domingo, 3 de marzo de 2019 21:10
  • Debido a que no hemos recibido alguna notificación que aún se esté presentando el problema que enuncia en vuestra consulta y que la respuesta provista provee un amplio panorama y campo de acción sobre tu duda; nos gustaría considerar la misma como resuelta debido a la respuesta apropiada proporcionada  y así proceder a calificar la misma como respuesta.

    No dudes en ampliar más sobre este tema si es que aún lo requirieras o de abrir una nueva consulta en caso de tener alguna situación o necesitarla con algún otro de los productos de Microsoft.

     

    Adicional le invito a consultar los siguientes recursos:

    Guía para formular preguntas en el foro

    Channel 9 - donde puedes encontrar una sección de: consejos para usar VB.NET

     

    Gracias por usar los foros de TechNet.

    Erick Rivera

     ____

     

    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. 

    jueves, 23 de mayo de 2019 15:46