Título: Ordenar valores de menor a mayor en una LisBox Publicado por: Usuario 202 en 8 Junio 2016, 19:54 pm 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
Y cuando lo ejecuto ocurre esto: (https://k61.kn3.net/2/B/7/5/0/3/0AA.png) Si saben como arreglar o que otro código implementar para que se pueda ordenar de menor a mayor se los agradeceré. Título: Re: Ordenar valores de menor a mayor en una LisBox Publicado por: Eleкtro en 15 Junio 2016, 01:11 am En realidad no hay ningún error, estás describiendo el comportamiento normal del algoritmo de ordenamiento de texto, donde "2" es mayor que "1000".
El problema real es que estás añadiendo elementos de tipo String en el ListBox. Si añadieses elementos de tipo Integer, entonces la propiedad ListBox.Sorted cumpliría su cometido dando el resultado que esperas obtener, un ordenamiento numérico. La solución más directa ya la he mencionado, pero de todas formas una solución simple al problema actual sería la siguiente: Código
Nota: También puedes utilizar el tipo List para añadir los elementos numéricos de forma desordenada, y activar la propiedad ListBox.Sorted, el resultado será el mismo. Saludos. Título: Re: Ordenar valores de menor a mayor en una LisBox Publicado por: Usuario 202 en 16 Junio 2016, 04:25 am Elrtro gracias por responder.
Tu respuesta me libro de un problema pero surgió otro problema. Entendí lo de String y Integer, en la ListBox, pero no pude implementar tu código ya que me daba un error en As New SortedSet(Of Integer) ya que el tipo 'SortedSet' no está definido. Bueno la verdad no supe en donde poner el código. Si me explicaras mejor en donde poner el código te lo agradecere Título: Re: Ordenar valores de menor a mayor en una LisBox Publicado por: Eleкtro en 16 Junio 2016, 05:13 am Según la MSDN, el tipo System.Collections.Generic.SortedSet(Of T) está disponible a partir de .NET Framework v4.0.
Puedes cambiar la versión de .NET Framework en las opciones del proyecto de Visual Studio. Si por el motivo que sea no puedes trabajar bajo .NET Framework v4.0, entonces como ya te mencioné puedes utilizar el tipo genérico System.Collections.Generic.List(Of T): Código
Bueno la verdad no supe en donde poner el código. Te lo voy a poner bien facil. 1. Añade este módulo a tu código fuente: Código
2. Cuando quieras ordenar los elementos del ListBox, simplemente debes llamar al método Sort: Código
...O si necesitas un ordenamiento de Strings: Código
PD: Lo siento, sin querer reemplacé el contenido de tu último mensaje, lo he podido recuperar pero se perdió el formato que le diste. Saludos Título: Re: Ordenar valores de menor a mayor en una LisBox Publicado por: Usuario 202 en 16 Junio 2016, 22:35 pm Te agradezco mucho por ayudarme Eleкtro, ya pude hacerlo.
Aunque debo de confesar, que en lo del modulo me confundí. Pero al final pude hacerlo, estaba trabajando en el Visual Studio 2008 y las plantillas solo estaban asta la NET Framework v3.0, así que mude mi proyecto al Visual Studio 2013, y utilice este código. Código
Y este es el resultado: (https://k60.kn3.net/2/F/8/7/D/0/BEB.jpg) Si tengo otra duda con mi proyecto espero contar con tu ayuda para poder resolverla. PD: Aunque este tema ya esta resuelto, la verdad me gustaría que me explicaras mejor lo del modulo ya que no entendí muy bien, pero a fin de cuentas gracias por ayudarme. Título: Re: Ordenar valores de menor a mayor en una LisBox Publicado por: Eleкtro en 16 Junio 2016, 23:42 pm PD: Aunque este tema ya esta resuelto, la verdad me gustaría que me explicaras mejor lo del modulo ya que no entendí muy bien, pero a fin de cuentas gracias por ayudarme.[/b][/size] En VB.NET, a diferencia de C#, puedes usar una Class: Código
O tmabién un Module: Código
Al igual que se haría para añadir una class, debes crear un nuevo archivo con extensión '.vb' y añadir el código del module. En Visual Studio, en el explorador de la solución, puedes añadir una class o un module de forma guiada con el botón derecho del ratón. Los módulos se suelen utilizar para declarar métodos de extensión, que sirven para ampliar o extender los métodos que puedes utilizar para "X" type, por ejemplo: en el módulo que te mostré, podemos acceder al método "Sort" escribiendo el nombre del método desde cualquier instancia de un Listbox: Listbox1.Sort() , pero también podemos usar el método escribiendo el nombre completo: MiModulo.Sort(Listbox1) . Saludos |