Most often when we have a list of items and want to select a single item at a time then we can use Combo Box or List Box in winforms application. The basic
difference in both is: In List Box one can select an item only from existing list of
items whether in Combo Box one can write his/her own new data that can be added to
our binding list.
There are some properties that are used to
bind a list of items in c# programming i.e
- Data Source
- Display Member
- Value Member
DataSource property will decide the list of
data that is to be bind. It may be a Database, Web Service and an object. When
this property is set, the item collection cannot be modified at run time.
DisplayMember property indicates the name of
an object contained in DataSource property. It denotes what object
will be displayed to the user. The default value is empty string.
ValueMember property is used to get the value
associated with the control when we are accessing the selected item property.
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public string Department { get; set; }
}
Now following code is used to get all records of employee from Database into a var type of variable named employees as given below:
DataContext dc = new DataContext();
var employees = from emp in dc.Employees
select
emp;
In the above code employees variable have IEnumerable<Employee> type of data and this type of data cannot directly bind to data source property of a control in our programming language. So we have to convert it to a List<Employee>.
To convert this simple type of data a ToList() method is sufficient.
In case of
Combo Box
ComboBox1.DataSource = employees.ToList();
ComboBox1.DisplayMember = "Name";
ComboBox1.ValueMember = "Id";
In case of List Box
ListBox1.DataSource = employees.ToList();
ListBox1.DisplayMember = "Name";
ListBox1.ValueMember = "Id";
Here ToList() method is used to convert
IEnumerable<Employee> type of data to List<Employee>.
Now when we run our project we will see the
list of employees Names in the item collection of Combo Box or ListBox.