C# ListBox - Sort Ascending and Descending

June 17, 2017 Oclemy C# ListBox, C# Array 0 minutes, 48 seconds

So guys we see here how to sort ListBox data in C# windows forms.We sort both ascending and descending. This is what we do :

  • Fill up an array with data.
  • Fill our ListBox with that data.
  • When the user clicks the sort button we sort ascending.
  • When the user clicks again we sort descending and vice versa.

Here's the code :  

using System;
using MetroFramework.Forms;

namespace CS_ListBox_Sort
{
    public partial class Form1 : MetroForm
    {
        //DECALARATIONS
        private readonly string[] spacecrafts = { "Kepler", "Casini", "Voyager", "New Horizon", "James Web", "Apollo 15", "Enterprise", "WMAP", "Spitzer", "Galileo" };
        private bool ascending = true;

        //constructor
        public Form1()
        {
            InitializeComponent();
            populate();
        }
        /*
         * POPULATE LISTBOX
         */
        private void populate()
        {
            listBox1.Items.Clear();
            foreach (var s in spacecrafts)
            {
                listBox1.Items.Add(s);
            }
        }

        /*
         * SORT
         */
        private void sort(bool asc)
        {
            //SORT ARRAY ASCENDING AND DESCENDING
            if (asc)
            {
                Array.Sort(spacecrafts);
            }
            else
            {
                Array.Reverse(spacecrafts);
            }

            //CLEAR AND POPULATE LISTBOX
            populate();

        }

        /*
         * SORT BUTTON CLICKED
         */
        private void sortBtn_Click(object sender, EventArgs e)
        {
            sort(ascending);
            ascending = !ascending;

        }

    }
}

Best Regards.

Comments