TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

<< Back to C-SHARP

C# ListBox Tutorial (DataSource, SelectedIndex)

ListBox stores several text items. It can interact with other controls, including Button controls. We use this control in Windows Forms. In the example program it interacts with 2 Buttons—through the Button Click event handler.
Tutorial. First, create a new Windows Forms C# project, and then open the Toolbox and double-click on the ListBox item. This will insert a new ListBox into your Windows Forms designer. If you want to use Buttons with the ListBox, add those too.

Next: Right-click on the Form in the Solution Explorer, and select "View Code." You will see a C# code file.

Here: Create a new List at the class level. This is what we will use for binding to the ListBox.

Info: We see a List of strings at the class level. In the constructor, we add 3 elements to the List.

DataSource: At the final point in the constructor, we assign the DataSource from the listBox1 to the new List.

DataSource
Example that creates List: C# using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication11 { public partial class Form1 : Form { List<string> _items = new List<string>(); // <-- Add this public Form1() { InitializeComponent(); _items.Add("One"); // <-- Add these _items.Add("Two"); _items.Add("Three"); listBox1.DataSource = _items; } } }
Button. Go back to your Designer window in Visual Studio where you see the image of the Form. Select the buttons and then add the text "Add" and "Remove" to their Text properties in the Properties pane.
Add event handlers. Here we double-click on each button in the Designer. You will be taken to the C# code view and a new event handler will have been inserted. In these event handlers, we manipulate the List and refresh the ListBox.
Click event handler: C# private void button1_Click(object sender, EventArgs e) { // The Add button was clicked. _items.Add("New item " + DateTime.Now.Second); // <-- Any string you want // Change the DataSource. listBox1.DataSource = null; listBox1.DataSource = _items; } private void button2_Click(object sender, EventArgs e) { // The Remove button was clicked. int selectedIndex = listBox1.SelectedIndex; try { // Remove the item in the List. _items.RemoveAt(selectedIndex); } catch { } listBox1.DataSource = null; listBox1.DataSource = _items; }
Form. Here we see the complete code for the Form.cs file, which acts on the ListBox and two Buttons in the Designer. It shows how to add and remove items to the ListBox with the buttons.

Info: We can add items to the ListBox by clicking the top button, and then remove the selected item by clicking the bottom button.

Example that uses DataSource: C# using System; using System.Collections.Generic; using System.Windows.Forms; namespace WindowsFormsApplication11 { public partial class Form1 : Form { List<string> _items = new List<string>(); public Form1() { InitializeComponent(); _items.Add("One"); _items.Add("Two"); _items.Add("Three"); listBox1.DataSource = _items; } private void button1_Click(object sender, EventArgs e) { // The Add button was clicked. _items.Add("New item " + DateTime.Now.Second); // Change the DataSource. listBox1.DataSource = null; listBox1.DataSource = _items; } private void button2_Click(object sender, EventArgs e) { // The Remove button was clicked. int selectedIndex = listBox1.SelectedIndex; try { // Remove the item in the List. _items.RemoveAt(selectedIndex); } catch { } listBox1.DataSource = null; listBox1.DataSource = _items; } } }
Enabled. You can easily change the Enabled state of your Add and Remove buttons by setting the Enabled property equal to false or true when the List is full or empty. This example demonstrates setting Enabled.

Button 1: Button1 is the Add button, so it always sets the Enabled property of Add to true.

Button 2: Button2 is the Remove button, so it is disabled when there are no items in the ListBox.

Button
Example that sets Enabled property: C# private void button1_Click(object sender, EventArgs e) { // The Add button was clicked. // ... button2.Enabled = true; } private void button2_Click(object sender, EventArgs e) { // The Remove button was clicked. // .... if (listBox1.Items.Count == 0) { button2.Enabled = false; } }
Usage. We describe properties on the ListBox. Often you can wire the events for keyboard comments straight to the button1_Click event handlers. This means the code paths are identical and less code needs to be tested.

SelectionMode: You can use this to eliminate the selection by setting it to None. This is useful for read-only displays.

IntegralHeight: The control can show partial rows. If the size of your Form cannot fit six elements, it will display only five.

HorizontalScrollbar: This property lets you specify if you want to be able to scroll horizontally on long items.

Tooltip on toolTip1: This property allows you to specify the tool tip. Note that you must have a toolTip1 in your Form first.

Anchor: You should always Anchor controls like the ListBox. Even better, use the TableLayoutPanel control and Anchor inside of it.

TableLayoutPanel
In Visual Studio, it is possible to actually simply type the items you want to be present in the ListBox using the designer. Then, when the program is executed, the code generated by Visual Studio will insert these values.

Tip: You can do this by modifying the Items property through the appropriate dialog box.

Summary. We added a ListBox and had other controls interact with it. We should bind its DataSource through some mechanism. Adding items manually is harder to do correctly and would be much more complex.
© TheDeveloperBlog.com
The Dev Codes

Related Links:


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf