SIGN UP MEMBER LOGIN:    
ARTICLE

Using ListBox in C#

Posted by devinder arora Articles | Windows Controls C# December 28, 2004
The source code demonstrates how to use a listbox control in C# - adding, deleting and altering strings.
Reader Level:

Description:

Tools: Windows 2000 & VS.NET SDK Beta 2.0

The source code demonstrates how to use a listbox control in C# - adding, deleting and altering strings. The source code is self-explanatory. To compile the code, install .NET SDK including C# compiler and use the following commands on MS-DOS prompt:

>csc ListBox.cs
>ListBox.exe 


 ListBoxDA001.gif

The source code listed in the following table. 

namespace
test
{
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
public class ListBox : System.Windows.Forms.Form
{
private System.ComponentModel.Container container;
private System.Windows.Forms.Button buttonAdd;
private System.Windows.Forms.Button buttonClose;
private System.Windows.Forms.Button buttonModify;
private System.Windows.Forms.Button buttonDelete;
private System.Windows.Forms.Button buttonMoveUp;
private System.Windows.Forms.Button buttonMoveDown;
private System.Windows.Forms.ListBox listbox;
private System.Windows.Forms.TextBox textbox;
private System.Windows.Forms.Label label;
private int nSelectedIndex;
//*********SIZE & LOCATION******************//
// COMPONENT - BUTTON(s) aligned along X-axis.
const int BUTTON_LENGTH = 50;
const int BUTTON_HEIGHT = 20;
const int FIRSTBUTTON_XPOS = 20;
const int FIRSTBUTTON_YPOS =220;
const int XSPACING = 70; // (Note: XSPACING >= BUTTON_LENGTH)
const int YSPACING = 0;
//COMPONENT - MOVE BUTTONS
const int MBUTTON_LENGTH = 20;
const int MBUTTON_HEIGHT = 20;
const int FIRSTMBUTTON_XPOS = 220;
const int FIRSTMBUTTON_YPOS =70;
const int SECONDMBUTTON_XPOS = 220;
const int SECONDMBUTTON_YPOS =100;
// COMPONENT - LISTBOX
const int LISTBOX_LENGTH = 3*BUTTON_LENGTH;
const int LISTBOX_HEIGHT = 6*BUTTON_HEIGHT;
const int LISTBOX_XPOS = 50;
const int LISTBOX_YPOS = 50;
// COMPONENT - LABEL
const int LABEL_LENGTH = 50;
const int LABEL_HEIGHT = 50;
const int LABEL_XPOS = 20; // align it with first button
const int LABEL_YPOS = 173;
// COMPONENT - TEXTBOX
const int TEXTBOX_LENGTH = 120;
const int TEXTBOX_HEIGHT = 50;
const int TEXTBOX_XPOS = 70;
const int TEXTBOX_YPOS = 170;
public ListBox() : base()
{
InitializeComponent();
}
public override void Dispose()
{
base.Dispose();
container.Dispose();
}
private void InitializeComponent()
{
// this
this.container = new System.ComponentModel.Container();
this.Text="List Box";
// buttonAdd
this.buttonAdd = new System.Windows.Forms.Button();
buttonAdd.Location =
new System.Drawing.Point(FIRSTBUTTON_XPOS,FIRSTBUTTON_YPOS);
buttonAdd.Text = "&Add";
buttonAdd.Size =
new System.Drawing.Size(BUTTON_LENGTH,BUTTON_HEIGHT); buttonAdd.Click += new System.EventHandler(this.buttonAdd_Click); buttonAdd.Enabled = false;
this.Controls.Add(this.buttonAdd);
//buttonModify
this.buttonModify = new System.Windows.Forms.Button();
buttonModify.Location =
new System.Drawing.Point(FIRSTBUTTON_XPOS+XSPACING,FIRSTBUTTON_YPOS+YSPACING);
buttonModify.Text = "&Modify";
buttonModify.Size =
new System.Drawing.Size(BUTTON_LENGTH,BUTTON_HEIGHT); buttonModify.Click += new System.EventHandler(this.buttonModify_Click); buttonModify.Enabled = false;
this.Controls.Add(this.buttonModify);
//buttonDelete
this.buttonDelete = new System.Windows.Forms.Button();
buttonDelete.Location =
new System.Drawing.Point(FIRSTBUTTON_XPOS+2*XSPACING,FIRSTBUTTON_YPOS+2*YSPACING); buttonDelete.Text = "&Delete";
buttonDelete.Size =
new System.Drawing.Size(BUTTON_LENGTH,BUTTON_HEIGHT); buttonDelete.Enabled = false;
buttonDelete.Click +=
new System.EventHandler(this.buttonDelete_Click); this.Controls.Add(this.buttonDelete);
// buttonClose
this.buttonClose = new System.Windows.Forms.Button();
buttonClose.Location =
new System.Drawing.Point(FIRSTBUTTON_XPOS+3*XSPACING,FIRSTBUTTON_YPOS+3*YSPACING); buttonClose.Text = "&Close";
buttonClose.Size =
new System.Drawing.Size(BUTTON_LENGTH,BUTTON_HEIGHT); buttonClose.Click += new System.EventHandler(this.buttonClose_Click); this.Controls.Add(this.buttonClose);
// listbox
this.listbox = new System.Windows.Forms.ListBox();
listbox.Location =
new System.Drawing.Point(LISTBOX_XPOS,LISTBOX_YPOS); listbox.Size = new System.Drawing.Size(LISTBOX_LENGTH,LISTBOX_HEIGHT); listbox.Click += new System.EventHandler(this.listbox_SelectedIndexChanged); listbox.BackColor = (Color)System.Drawing.SystemColors.Desktop;
this.Controls.Add(this.listbox);
// label
this.label = new System.Windows.Forms.Label();
label.Location =
new System.Drawing.Point(LABEL_XPOS,LABEL_YPOS);
label.Size =
new System.Drawing.Size(LABEL_LENGTH,LABEL_HEIGHT);
label.Text = "Enter:";
this.Controls.Add(this.label);
// textbox
this.textbox = new System.Windows.Forms.TextBox();
textbox.Location =
new System.Drawing.Point(TEXTBOX_XPOS,TEXTBOX_YPOS); textbox.Click += new System.EventHandler(this.textbox_Click);
textbox.Size =
new System.Drawing.Size(TEXTBOX_LENGTH,TEXTBOX_HEIGHT); this.Controls.Add(this.textbox);
// buttonMoveUp
this.buttonMoveUp = new System.Windows.Forms.Button(); buttonMoveUp.Location = new System.Drawing.Point(FIRSTMBUTTON_XPOS,FIRSTMBUTTON_YPOS);
buttonMoveUp.Text = "<";
buttonMoveUp.Size =
new
System.Drawing.Size(MBUTTON_LENGTH,MBUTTON_HEIGHT);
buttonMoveUp.Click +=
new System.EventHandler(this.buttonMoveUp_Click);
buttonMoveUp.Enabled =
false;
this.Controls.Add(this.buttonMoveUp);
// buttonMoveDown
this.buttonMoveDown = new System.Windows.Forms.Button();
buttonMoveDown.Location =
new System.Drawing.Point(SECONDMBUTTON_XPOS,SECONDMBUTTON_YPOS);
buttonMoveDown.Text = ">";
buttonMoveDown.Size =
new System.Drawing.Size(MBUTTON_LENGTH,MBUTTON_HEIGHT);
buttonMoveDown.Click +=
new System.EventHandler(this.buttonMoveDown_Click); buttonMoveDown.Enabled = false;
this.Controls.Add(this.buttonMoveDown);
}
protected void textbox_Click(Object sender, System.EventArgs e)
{
this.buttonAdd.Enabled = true;
if (this.listbox.Items.Count>0)
EnableAllListBoxButtons();
}
protected void listbox_SelectedIndexChanged(object sender, System.EventArgs e)
{
nSelectedIndex =
this.listbox.SelectedIndex;
string szSelected = (string)this.listbox.SelectedItem;
this.textbox.Text = szSelected;
}
protected void buttonAdd_Click(Object sender, System.EventArgs e)
{
if (this.textbox.Text !="")
{
this.listbox.Items.Add(this.textbox.Text);
this.textbox.Text = "";
EnableAllListBoxButtons();
}
}
protected void buttonModify_Click(Object sender, System.EventArgs e)
{
this.listbox.Items[nSelectedIndex] = this.textbox.Text;
}
protected void buttonDelete_Click(Object sender, System.EventArgs e)
{
nSelectedIndex =
this.listbox.SelectedIndex;
this.listbox.Items.Remove(nSelectedIndex);
System.Console.WriteLine("Remove fn does not work...");
}
protected void buttonClose_Click(Object sender, System.EventArgs e)
{
this.Close();
}
protected void buttonMoveUp_Click(Object sender, System.EventArgs e)
{
if (this.listbox.SelectedIndex >0)
this.listbox.SelectedIndex--;
}
protected void buttonMoveDown_Click(Object sender, System.EventArgs e)
{
if (this.listbox.SelectedIndex < this.listbox.Items.Count-1)
this
.listbox.SelectedIndex++;
}
private void EnableAllListBoxButtons()
{
this.buttonAdd.Enabled = true;
this.buttonModify.Enabled = true;
this.buttonDelete.Enabled = true;
this.buttonMoveUp.Enabled = true;
this.buttonMoveDown.Enabled = true;
}
[STAThread]

public static void Main(string[] args)
{
Application.Run(
new ListBox());
}
}
// class
} // namespace 

Further Readings

Here are more articles on ListBox control.

share this article :
post comment
 

remove function works... edit it to RemoveAt()...

Posted by Ayan Sasmal Jan 08, 2011

when i compile this program on my pc function " buttonModify_Click" is giving error that "indexers are not allowed in group method". Please let me know how to resolve this error as soon as possible my email address is fzlink@hotmail.com.

Posted by Faisal Zubair Dec 12, 2007

when i compile this program on my pc function " buttonModify_Click" is giving error that "indexers are not allowed in group method". Please let me know how to resolve this error as soon as possible my email address is fzlink@hotmail.com.

Posted by Faisal Zubair Dec 12, 2007
Nevron Gauge for SharePoint
Become a Sponsor
PREMIUM SPONSORS
  • Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
    Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
Nevron Gauge for SharePoint
Become a Sponsor