elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Como evitar se muestren números con el signo negativo en un ListBox ?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como evitar se muestren números con el signo negativo en un ListBox ?  (Leído 575 veces)
luis456


Desconectado Desconectado

Mensajes: 525



Ver Perfil
Como evitar se muestren números con el signo negativo en un ListBox ?
« en: 15 Febrero 2020, 21:39 »

Hola a todos

lo tenia pero no encuentro la rutina como se eliminan los numeros con  signos negativos en un listbox .

ejemplo :

         -1
         -3

uso este codigo que funciona bien para mostrar los resultados pero a veces salen numeros con negativo


Código
  1. Dim Result As IEnumerable(Of Integer) =
  2.            (Result1.Concat(Result2).Concat(Result3).Concat(Result4).Concat(Result5)).
  3.            Distinct.
  4.            Select(Function(Value As Integer)
  5.                       Return If(Value < MAX, Value, Rand.Next(0, MAX))
  6.                   End Function)
  7.  
  8.  
  9.  
  10.        ListBox7.Items.AddRange(Result.Cast(Of Object).ToArray)

saludos
Luis






En línea

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

Desconectado Desconectado

Mensajes: 193


Ver Perfil
Re: Como evitar se muestren números con el signo negativo en un ListBox ?
« Respuesta #1 en: 15 Febrero 2020, 22:01 »

¿y si multiplicas el valor por -1? pregunto -1 * -1=1

si el valor es < 0 ... valor = valor  * -1


En línea

luis456


Desconectado Desconectado

Mensajes: 525



Ver Perfil
Re: Como evitar se muestren números con el signo negativo en un ListBox ?
« Respuesta #2 en: 16 Febrero 2020, 16:08 »

¿y si multiplicas el valor por -1? pregunto -1 * -1=1

si el valor es < 0 ... valor = valor  * -1

es que ya uso una función en el programa y solo necesito filtrar ese resultado cuando lo envió al listbox

los duplicados ya los elimino con este codigo pero siguen saliendo numeros con el - adelante ?

Código
  1. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
  2.        ' Le pasa el Listbox a la función
  3.        MsgBox(Eliminar(ListBox23), _
  4.               MsgBoxStyle.Information, _
  5.               "Elementos duplicados en el List ")
  6.    End Sub
  7.    Function Eliminar(ByVal LB As ListBox) As Int32
  8.        Dim i As Int32
  9.        Dim j As Int32
  10.        Dim n As Int32
  11.  
  12.        ' Recorre los items ( copara empezando _
  13.        'desde el primero , de abajo hacia arriba)
  14.        For i = 0 To LB.Items.Count - 2
  15.            For j = LB.Items.Count - 1 To i + 1 Step -1
  16.                ' verifica si es el mismo
  17.                If LB.Items(i).ToString = LB.Items(j).ToString Then
  18.                    ' elimina el elemento indicando el índice
  19.                    LB.Items.RemoveAt(j)
  20.                    n += 1 'lleva la cuenta de los duplicados
  21.                End If
  22.            Next
  23.        Next
  24.        Return n ' retorna los eliminados
  25.    End Function *

saludos
Luis
En línea

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

Desconectado Desconectado

Mensajes: 193


Ver Perfil
Re: Como evitar se muestren números con el signo negativo en un ListBox ?
« Respuesta #3 en: 16 Febrero 2020, 16:44 »

podrías meterlo en array List y luego usar Disctinct.ToList para eliminar elementos repetidos, luego lo metes en un listbox y listo.


Código
  1.      Dim Lista As New List(Of Integer)
  2.        Lista.AddRange({1, 5, 5, 5, 4, 1, 12, 4, 55, 55, 55, 55})
  3.        Lista = Lista.Distinct.ToList
  4.         ListBox1.DataSource = Lista
  5.  
  6.        'For Each Elemento As String In Lista
  7.            'ListBox1.Items.Add(Elemento)
  8.        'Next
  9.  
  10.  
« Última modificación: 17 Febrero 2020, 07:18 por FJDA » En línea

luis456


Desconectado Desconectado

Mensajes: 525



Ver Perfil
Re: Como evitar se muestren números con el signo negativo en un ListBox ?
« Respuesta #4 en: 16 Febrero 2020, 20:06 »

podrías meterlo en array List y luego usar Disctinct.ToList para eliminar elementos repetidos, luego lo metes en un listbox y listo.


Código
  1.      Dim Lista As New List(Of String)
  2.        Lista.AddRange({1, 5, 5, 5, 4, 1, 12, 4, 55, 55, 55, 55})
  3.        Lista = Lista.Distinct.ToList
  4.  
  5.        For Each Elemento As String In Lista
  6.            ListBox1.Items.Add(Elemento)
  7.  
  8.        Next
  9.  

Te agradezco tu aporte pero lo que busco es eliminar los que tengan signos negativo adelante ,se que tenia todas esas Rutinas gracias a Electro, pero he perdido todos esos códigos y estoy en cero  >:(
 he recuperado parte de todo el codigo pero no encuentro este,

saludos
Luis




En línea

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

Desconectado Desconectado

Mensajes: 193


Ver Perfil
Re: Como evitar se muestren números con el signo negativo en un ListBox ?
« Respuesta #5 en: 17 Febrero 2020, 05:29 »

Te agradezco tu aporte pero lo que busco es eliminar los que tengan signos negativo adelante ,se que tenia todas esas Rutinas gracias a Electro, pero he perdido todos esos códigos y estoy en cero  >:(
 he recuperado parte de todo el codigo pero no encuentro este,

saludos
Luis
no se, soy yo  o te explicas mal "lo que busco es eliminar los que tengan signos negativo adelante" , esto es muy ambiguo por lo menos en un principio

Esto está respondido  arriba multiplicando los elementos por -1, no lo hice porque era mas que evidente pero parece que quiere que te den el código hecho;

 
Código
  1.     For I As Integer = 0 To ListBox1.Items.Count - 1
  2.            If ListBox1.Items(I) < 0 Then
  3.                ListBox1.Items(I) = ListBox1.Items(I) * -1
  4.            End If
  5.        Next

Como se repiten hay que quitar los repetidos, usando el array LIST como te expliqué y he publicado el código eliminas los repetidos.

Código
  1. Public Class Form1
  2.    Dim lista() As Integer = {-1, -2, -3, -4, -5, 0, 1, 2, 3, 4, 5, 6}
  3.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  4.        'ListBox1.DataSource = lista
  5.        For Each elemento In lista
  6.            ListBox1.Items.Add(elemento)
  7.        Next
  8.    End Sub
  9.  
  10.    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  11.        '//QUITAR SIGNOS NEGATIVOS
  12.        For I As Integer = 0 To ListBox1.Items.Count - 1
  13.            If ListBox1.Items(I) < 0 Then
  14.                ListBox1.Items(I) = ListBox1.Items(I) * -1 'nota: no funciona si se usa  ListBox1.DataSource()
  15.            End If
  16.        Next
  17.  
  18.        '//QUITAR ELEMENTOS REPETIDOS
  19.        Dim nuevaLista As New List(Of Integer)
  20.        For Each elemento In ListBox1.Items
  21.            nuevaLista.Add(elemento)
  22.        Next
  23.  
  24.        nuevaLista = nuevaLista.Distinct.ToList() 'elimina repetidos
  25.        nuevaLista.Sort() 'Ordena la lista
  26.        ListBox1.Items.Clear() 'limpia el listbox (no funciona con DataSource)
  27.        'ListBox1.DataSource= Nothing 'usar solo si es se usó datasource para llenar el listbox
  28.        For Each Elemento As String In nuevaLista
  29.            ListBox1.Items.Add(Elemento)
  30.        Next
  31.    End Sub
  32. End Class
  33.  

Si lo que quieres, porque ya no se que pensar es quitar los número negativos entonces usa linq para obtener solo aquellos números que sean mayores que cero, aunque hay formas más típicas de hacerlo como pasar todo a un array, y volver a meter en e listbox ya sin los negativos usando if then y for next

Código
  1. Public Class Form1
  2.    Dim lista() As Integer = {-1, -2, -3, -4, -5, 0, 1, 2, 3, 4, 5, 6}
  3.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  4.        ListBox1.DataSource = lista
  5.        'For I As Integer = 0 To lista.Length -1
  6.        '    ListBox1.Items.Add(lista(I))
  7.        'Next
  8.    End Sub
  9.  
  10.    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  11.        '//elimina los número negativos
  12.        Dim NumPositivo As IEnumerable(Of String) = Nothing
  13.        NumPositivo = From value1 In lista Where (value1 >= 0) Select String.Format("{0}", value1)
  14.        ListBox1.DataSource = Nothing
  15.        'Si no se usara DataSourse usar lo siguinte:
  16.        'ListBox1.Items.Clear()
  17.        For Each pairs As String In NumPositivo
  18.            ListBox1.Items.Add(pairs)
  19.            My.Application.DoEvents()
  20.        Next pairs
  21.    End Sub
  22. End Class
  23.  

Añado que preguntaste:
Citar
Como evitar se muestren números con el signo negativo en un ListBox ?

y como "como evitar" es multiplicar por -1 ANTES de meterlo en el listbox y si no los quieres meter números negativos usa la condición si es menor que cero no lo mentas en el listbox.

Claro que si quieres una respuesta exclusivamente de @Elektro perfectamente elaborada, entonces ya eso es otra cosa. A ver si aparece por aquí y si no pues le envías un mensaje personal y a ver si te contesta.


saludos
« Última modificación: 17 Febrero 2020, 19:08 por FJDA » En línea

luis456


Desconectado Desconectado

Mensajes: 525



Ver Perfil
Re: Como evitar se muestren números con el signo negativo en un ListBox ?
« Respuesta #6 en: 17 Febrero 2020, 08:08 »

Gracias FJDA

No no quiero todo hecho, solo que de verdad suelo hacer las preguntas mal enfocadas ,y ademas ya tengo casi 60 años y me cuesta un poco más esto, ya que yo programo por vicio o hobby y si nombro a ELECTRO no es por nada especial,solo que el tuvo mucha paciencia conmigo  :silbar:
y se que mis codigos son algo básicos,pero pregunto porque estoy seguro que alguien mas le servirán,supieras la de codigos que he cojido del foro y me han ayudado.

De verdad que muchas gracias por tu ayuda para este viejo  ;-)

Luis
En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines