Autor Tema: Ordenar valores numéricos (números) de menor a mayor en un ListBox Visual Basic  (Leído 11746 veces)

Usuario 101

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Hola, estoy trabajando en un pequeño proyecto en Visual studio, en Form y me he encontrado con un problema.

Mi problema es como ordenar los valores agregados a una ListBox por medio de un botón. Me dieron un código que es de las propiedades de la ListBox, estoy hablando del "Sorted". Bueno este es el código que tengo.

Código: [Seleccionar]
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Esto es para agregar los valores a la ListBox
        ListBox1.Items.Add(TextBox1.Text)
        TextBox1.Text = ""
        TextBox1.Focus()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
' Esto segun es para que se ordenara
        ListBox1.Sorted = True
    End Sub
End Class

Y cuando lo ejecuto ocurre esto:


Si saben como arreglar o que otro código implementar para que se pueda ordenar de menor a mayor se los agradeceré.
« Última modificación: 21 de Junio 2016, 21:20 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola!

La propiedad sorted en los listbox sirve para ordenar alfabéticamente Strings, es decir, cadenas de texto.

Al ordenar como si fuera un texto lo que hace es buscar el carácter más bajo, y según ese ordena. Por ejemplo 13 lo pondría antes que 5 porque lo que mira primero es el primer carácter (primera letra) y como 1 es más pequeño que 5 pues coloca 13 antes que 5, sólo porque los trata como si fueran texto.

Si lo que quieres es ordenar números puedes basarte en este código:

Código: [Seleccionar]
Private Shared Sub SortIntegerListBox(ByVal listBox As ListBox)
    Dim TempList As New List(Of Integer)
    For Each LI In listBox.Items
        TempList.Add(Integer.Parse(LI.ToString()))
    Next
    TempList.Sort()
    listBox.DataSource = TempList
End Sub

Un ejemplo de cómo se podría usar el código:

Código: [Seleccionar]
    Dim Items As New List(Of Integer)
    Items.Add(1)
    Items.Add(13)
    Items.Add(2)

    Me.ListBox1.DataSource = Items
    SortIntegerListBox(Me.ListBox1)

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".