954,505 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?

Experiments with a ListBox (C#)

0
By vegaseat on Dec 21st, 2004 6:11 am

I am afraid, I am starting to like C#, despite the somewhat bloated .Net Framework requirements. Mister Bill's Microsoft is very supportive though. The language has a nice flow compared to GUI programming in C++. Here we are looking at a standard ListBox, add some items, sort them and select them.

/*
 * Created with SharpDevelop free C# system from
 * http://www.icsharpcode.net/opensource/sd/
 * User: vegaseat
 * 
 * Create a ListBox, then add, sort, select items
 * A Windows Application
 */
 
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace ListBox1
{
  // Summary description for Form1
  // so we got a form (window) with a label, 2 buttons and a listbox ...
  public class Form1 : System.Windows.Forms.Form
  {
    private System.Windows.Forms.Label label1;
    private System.Windows.Forms.Button sortLBbutton;
    private System.Windows.Forms.Button LoadLBbutton;
    private System.Windows.Forms.ListBox listBox1;
    // Required designer variable
    private System.ComponentModel.Container components = null;

    // time to build the form and it's components ...
    public Form1()
    {
      InitializeComponent();
    }
		
    // clean up any resources being used ...
    protected override void Dispose( bool disposing )
    {
      if (disposing)
      {
        if (components != null) 
        {
          components.Dispose();
        }
      }
      base.Dispose(disposing);
    }

    // all the components in detail ...
    private void InitializeComponent() {
      System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));
      this.listBox1 = new System.Windows.Forms.ListBox();
      this.LoadLBbutton = new System.Windows.Forms.Button();
      this.sortLBbutton = new System.Windows.Forms.Button();
      this.label1 = new System.Windows.Forms.Label();
      this.SuspendLayout();
      // 
      // listBox1
      // 
      this.listBox1.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(255)), ((System.Byte)(224)), ((System.Byte)(192)));
      this.listBox1.ItemHeight = 16;
      this.listBox1.Location = new System.Drawing.Point(8, 8);
      this.listBox1.Name = "listBox1";
      this.listBox1.Size = new System.Drawing.Size(168, 244);
      this.listBox1.TabIndex = 0;
      this.listBox1.SelectedIndexChanged += new System.EventHandler(this.ListBox1SelectedIndexChanged);
      // 
      // LoadLBbutton
      // 
      this.LoadLBbutton.Location = new System.Drawing.Point(200, 16);
      this.LoadLBbutton.Name = "LoadLBbutton";
      this.LoadLBbutton.Size = new System.Drawing.Size(128, 23);
      this.LoadLBbutton.TabIndex = 1;
      this.LoadLBbutton.Text = "Load ListBox";
      this.LoadLBbutton.Click += new System.EventHandler(this.LoadLBbutton_Click);
      // 
      // sortLBbutton
      // 
      this.sortLBbutton.Location = new System.Drawing.Point(200, 56);
      this.sortLBbutton.Name = "sortLBbutton";
      this.sortLBbutton.Size = new System.Drawing.Size(128, 23);
      this.sortLBbutton.TabIndex = 3;
      this.sortLBbutton.Text = "Sort the ListBox";
      this.sortLBbutton.Click += new System.EventHandler(this.sortLBbuttonClick);
      // 
      // label1
      // 
      this.label1.Location = new System.Drawing.Point(8, 264);
      this.label1.Name = "label1";
      this.label1.Size = new System.Drawing.Size(160, 24);
      this.label1.TabIndex = 2;
      this.label1.Text = "---";
      // 
      // Form1
      // 
      this.AutoScaleBaseSize = new System.Drawing.Size(6, 15);
      this.BackColor = System.Drawing.Color.WhiteSmoke;
      this.ClientSize = new System.Drawing.Size(344, 296);
      this.Controls.Add(this.sortLBbutton);
      this.Controls.Add(this.label1);
      this.Controls.Add(this.LoadLBbutton);
      this.Controls.Add(this.listBox1);
      this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
      this.Name = "Form1";
      this.Text = "Load a ListBox and sort ...";
      this.ResumeLayout(false);
    }
	
    //	
    // The main entry point for the application
    //
    static void Main() 
    {
      Application.Run(new Form1());
    }

    //
    // the events, or let's do something with the components ...
    //

    // load some data into the ListBox
    private void LoadLBbutton_Click(object sender, System.EventArgs e)
    {
      listBox1.Items.Add("Helmut");
      listBox1.Items.Add("Helga");
      listBox1.Items.Add("Andreas");
      listBox1.Items.Add("Volger");
      listBox1.Items.Add("Kurt");
      listBox1.Items.Add("Erich");
      listBox1.Items.Add("Bjorn");
      listBox1.Items.Add("Lena");
      listBox1.Items.Add("Kristina");
      label1.Text = "Select an item ...";
    }

    // selected ListBox item is transferred to label1
    void ListBox1SelectedIndexChanged(object sender, System.EventArgs e)
    {
    	label1.Text = listBox1.SelectedItems[0].ToString();
    }
    
    // sort the items of the ListBox
    void sortLBbuttonClick(object sender, System.EventArgs e)
    {
      listBox1.Sorted = true;
    }
    
  }
}

Just a note: What you get from SharpDevelop is actually the IDE written in C# that uses the compiler from the .NET Framework Version 1.1 Redistributable Package called dotnetfx.exe from Microsoft. The IDE works very much like Visual C# or VB. For this program the Form Builder within the IDE generates most of the center portion of the code.

vegaseat
DaniWeb's Hypocrite
Moderator
5,989 posts since Oct 2004
Reputation Points: 1,345
Solved Threads: 1,417
 

Hello, I have tried your code and for some reason is not working properly. When I try to select an item in the listbox it suppose to go to the label.
Is there a possible that I may have something wrong with the compiler I am currently using?

I appreciate for your feedback.

Regards,

Desi Bravo

bravo659
Light Poster
27 posts since May 2005
Reputation Points: 10
Solved Threads: 0
 

After all these years there is nothing wrong with this code. I used Visual Studio C# 2008.

ddanbe
Senior Poster
3,829 posts since Oct 2008
Reputation Points: 2,070
Solved Threads: 661
 

Hi David,
Believe it or not I copy and pasted the above code to visual C# compiler and is not firing. I am not saying there is something wrong with the code. I am saying that is not working. I am working on similar project and I coded in the selectedindexchanged for when a user select a name in the listbox it fires to the textbox with the correct information. So I was wondering it may be my visual C# express edition that is not working properly or something. Can you help?
Thanks!

Regards,

Desi Bravo

bravo659
Light Poster
27 posts since May 2005
Reputation Points: 10
Solved Threads: 0
 

I would just like to point something out, I hope you don't take any offense. :) There is a quicker way to add items to the listbox. :)

String[] items = { "item1", "second item", "another item", "and another..." };

private void LoadLBbutton_Click(object sender, System.EventArgs e)
{
foreach (String item in items)
                listBox1.Items.Add(item);

label1.Text = "Select an item...";
}
baeltazor
Newbie Poster
1 post since Apr 2010
Reputation Points: 10
Solved Threads: 0
 

baeltazor, I see you are accustom to the .net baby sitter as much as I am. :). C and C++ people don't tend to use foreach loops often when the migrate to .net because its only possible in programming languages that use virtual machines like .net's CLR. But it actually adds an overhead, slowing down the execution of the code. Plus your version of the code requires creating an addition object, that takes time to initialize, takes more system resource, and twice the memory.

Not that its a bad way to do it. computers these days are plenty fast and for each loops and they are very fun and easy to use.

But even though its less typing, technically the OP's way of doing it was "faster" by terms of the program execution.

Diamonddrake
Master Poster
724 posts since Mar 2008
Reputation Points: 442
Solved Threads: 89
 
vinay53
Newbie Poster
1 post since Dec 2010
Reputation Points: 10
Solved Threads: 0
 

Thank U very much

anucom
Newbie Poster
9 posts since Feb 2011
Reputation Points: 10
Solved Threads: 1
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You
View similar articles that have also been tagged: