Como podría combinar el contenido de dos lixtbox en un tercero

Iniciado por luis456, 26 Diciembre 2013, 02:44 AM

0 Miembros y 1 Visitante están viendo este tema.

luis456

Hola ando buscando una forma corta de combinar (no sumar ni adicionar) todo el contenido de dos lisbox en un otro sin que haya duplicados en grupos de cuatro resultados esto es si hay por ejemplo entre los dos lisbox 12 numeros que se muestren grupos de cuatro esto seria 3 resultados de cuatro números cada uno


Gracias :)

Felices fiestas a todos

Luis
Que tu sabiduria no sea motivo de Humillacion para los demas

luis456

Que tu sabiduria no sea motivo de Humillacion para los demas

Eleкtro

#2
Al final voy a acabar odiando los Listbox :silbar:

¿Que has intentado?

No entiendo muy bien lo que pretendes hacer (eso de combinar, pero no sumar ni adicionar?), te muestro la manera de concatenar dos listas de items en un tercer Listbox, añadiendo un "separador" entre cada lista (que si no me equivoco, ya las tienes agrupadas de 4 en 4).

Código (vbnet) [Seleccionar]
       Dim Items1 As List(Of String) = ListBox1.Items.Cast(Of String)().ToList
       Items1.Add("  ")

       Dim Items2 As List(Of String) = ListBox2.Items.Cast(Of String)().ToList
       Items2.Add("  ")

       Dim CombinedItems As List(Of String) = Items1.Concat(Items2).ToList

       ListBox3.Items.AddRange(CombinedItems.ToArray)


Saludos








luis456

Cita de: ElektroZoider en 29 Diciembre 2013, 02:32 AM
Al final voy a acabar odiando los Listbox :silbar:

¿
Saludos

Bien la idea es que me muestre en un tercer lisbox los datos que tienen estos dos primeros y bueno seria agruparlos en un tercero pero estoy tratando de hacer funcionar tu codigo pero me da este error " se esperaba una declaracion "

Bien se que es declarar al principio y con
Dim Items1
Dim Items2

los declaro y si pasa, pero tambien  me pide declarar el listbox3 y ai si quedo parado ;( he buscado pero no encuentro como declaralo


Gracias

Luis






Que tu sabiduria no sea motivo de Humillacion para los demas

Eleкtro

Cita de: luis456 en 29 Diciembre 2013, 14:20 PMpero tambien  me pide declarar el listbox3 y ai si quedo parado ;( he buscado pero no encuentro como declaralo

'¬¬

Agrega un Listbox en la GUI y cámbiale el nombre por "Listbox3"

Lo de arriba es un simple ejemplo con 3 listbox (listbox1, listbox2 y listbox3) que óbviamente deben existir en la GUI, puedes utilizar los nombres que quieras...

saludos








luis456

#5
Ya funciona :)  y estoy tratando de eliminar repetidos con:)

.Distinct().ToArray() ' Eliminar duplicados pero no va
Lo de ordenar ya se como se hace :)



Código (vbnet) [Seleccionar]
Public Class Form1
   Dim maximum As Short = 49
   Dim x As Integer = 0
   Dim Número As Double
   Private TextBoxes As TextBox() = {Nothing}
   Private Result1 As Int32(), Result2 As Int32()
   Private _textBox As Object
   Private Property ListBox1Count As Integer

   Private Sub FrmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
       Me.ControlBox = False ' Elimino todos los controles del formulario
   End Sub

   Private Property Calcular As Object

   Private Property TextBox(ByVal TextBoxCount As Short) As Object
       Get
           Return _textBox
       End Get
       Set(ByVal value As Object)
           _textBox = value
       End Set
   End Property

   Public Sub solonumeros(ByRef e As System.Windows.Forms.KeyPressEventArgs)
       ' evitar letras
       If Char.IsDigit(e.KeyChar) Then
           e.Handled = False
       ElseIf Char.IsControl(e.KeyChar) Then
           e.Handled = False
       ElseIf Char.IsSeparator(e.KeyChar) Then
           e.Handled = False
       Else
           e.Handled = True
       End If

   End Sub


   ReadOnly Property Num1 As Int32
       Get
           Return CInt(TextBox1.Text)
       End Get
   End Property

   ReadOnly Property Num2 As Int32
       Get
           Return CInt(TextBox2.Text)
       End Get
   End Property
 

   Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

       Result1 = {Num1 + 10, Num1 + 20, Num1 + 30} _
                 .Distinct().ToArray ' Elimino duplicados

       Result2 = {Num2 + 10, Num2 + 20, Num2 + 30} _
                 .Distinct().ToArray ' Elimino duplicad


       Array.Sort(Result1) : Array.Sort(Result2) ' El número no está repetido:

       Dim Results As IEnumerable(Of Integer) =
           Result1  ' El número no está repetido.Concat(Result2)  

     

       For X As Integer = 0 To Results.Count - 1
           
           Dim Items1 As List(Of String) = ListBox1.Items.Cast(Of String)().ToList
           Items1.Add("  ")


           Dim Items2 As List(Of String) = ListBox2.Items.Cast(Of String)().ToList
           Items2.Add("  ")

           Dim CombinedItems As List(Of String) = Items1.Concat(Items2).ToList


           ListBox3.Items.AddRange(CombinedItems.ToArray)



           Select Case Results.Where(Function(n) n = Results(X)).Skip(1).Any

               Case False ' El número no está repetido en ninguna "linea"
                   ' Así que colocamos el número en el Textbox
                   Try
                       ListBox1.Items.Add(CStr(Results(X)))


                       ' TextBoxes(TextBoxCount).Text = CStr(Results(X))
                   Catch ex As Exception
                       Throw New Exception(ex.Message & ex.StackTrace)
                   End Try

                 

           End Select


       Next X
       ' -------segunda

       Dim Resultss As IEnumerable(Of Integer) =
           Result2 ' .

       

       For X As Integer = 0 To Resultss.Count - 1



           Select Case Resultss.Where(Function(n) n = Resultss(X)).Skip(1).Any

               Case False
                   Try
                       ListBox2.Items.Add(CStr(Resultss(X)))

                   Catch ex As Exception
                       Throw New Exception(ex.Message & ex.StackTrace)
                   End Try

                   
           End Select
           
       Next X
     
   End Sub
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

   End Sub
 
End Class


Luis
Que tu sabiduria no sea motivo de Humillacion para los demas