Getting Started with Windows Forms ListView (SfListView)
17 Jul 202618 minutes to read
This section provides a quick overview for getting started with SfListView for WinForms. Walk through the entire process of creating a real-world SfListView.
Assembly Deployment
Refer to the control dependencies section for the list of assemblies or NuGet package that must be referenced to use the control in any application.
To install via NuGet Package Manager Console, run:
Install-Package Syncfusion.ListView.WinForms
Creating Application with SfListView control
In this walkthrough, you will create a WinForms application that contains the SfListView control.
Creating the Project
Create a new Windows Forms project in Visual Studio to display the SfListView with data objects.
Adding Control via Designer
The SfListView control can be added to the application by dragging it from the toolbox and dropping it in the designer. The required assembly references will be added automatically.

Adding Control in Code
To add control manually, follow the steps:
-
Add the following required assembly references to the project:
-
Syncfusion.Core.WinForms
-
Syncfusion.DataSource.WinForms
-
Syncfusion.GridCommon.WinForms
-
Syncfusion.SfListView.WinForms
-
-
Create the SfListView control instance and add it to the form.
using Syncfusion.WinForms.ListView;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
SfListView sfListView1 = new SfListView ();
sfListView1.Location = new Point(100, 100);
sfListView1.Size = new Size(300,320);
this.Controls.Add(sfListView1);
}
}
}Imports Syncfusion.WinForms.ListView
Namespace WindowsFormsApplication1
Partial Public Class Form1
Inherits Form
Public Sub New()
InitializeComponent()
Dim listView As New SfListView()
listView.Location = New Point(100,100)
listView.Size = New Size(300,320)
Me.Controls.Add(listView)
End Sub
End Class
End NamespaceCreating data for the sample application
To create the data for the sample application, follow these steps:
-
Create a data object class named
CountryInfoand declare its properties.public class CountryInfo { public string CountryName { get; set; } public string Continent { get; set; } }Public Class CountryInfo Public Property CountryName() As String Public Property Continent() As String End Class -
Create a
List<CountryInfo>collection initialized in aGetDataSourcemethod to add several data objects.public List<CountryInfo> GetDataSource() { List<CountryInfo> countryInfoCollection = new List<CountryInfo>(); countryInfoCollection.Add(new CountryInfo() { CountryName = "China", Continent = "Asia" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "India", Continent = "Asia" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Japan", Continent = "Asia" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Malaysia", Continent = "Asia" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Singapore", Continent = "Asia" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Kenya", Continent = "Africa" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Nigeria", Continent = "Africa" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "South Africa", Continent = "Africa" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Uganda", Continent = "Africa" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Zimbabwe", Continent = "Africa" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "France", Continent = "Europe" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Germany", Continent = "Europe" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Italy", Continent = "Europe" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Spain", Continent = "Europe" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "United Kingdom", Continent = "Europe" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Canada", Continent = "North America" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Cuba", Continent = "North America" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Jamaica", Continent = "North America" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Mexico", Continent = "North America" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "United States of America", Continent = "North America" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Australia", Continent = "Oceania" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "New Zealand", Continent = "Oceania" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Argentina", Continent = "South America" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Brazil", Continent = "South America" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Chile", Continent = "South America" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Colombia", Continent = "South America" }); countryInfoCollection.Add(new CountryInfo() { CountryName = "Uruguay", Continent = "South America" }); return countryInfoCollection; }Public Function GetDataSource() As List(Of CountryInfo) Dim countryInfoCollection As New List(Of CountryInfo)() countryInfoCollection.Add(New CountryInfo() With {.CountryName = "China", .Continent = "Asia"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "India", .Continent = "Asia"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Japan", .Continent = "Asia"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Malaysia", .Continent = "Asia"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Singapore", .Continent = "Asia"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Kenya", .Continent = "Africa"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Nigeria", .Continent = "Africa"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "South Africa", .Continent = "Africa"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Uganda", .Continent = "Africa"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Zimbabwe", .Continent = "Africa"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "France", .Continent = "Europe"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Germany", .Continent = "Europe"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Italy", .Continent = "Europe"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Spain", .Continent = "Europe"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "United Kingdom", .Continent = "Europe"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Canada", .Continent = "North America"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Cuba", .Continent = "North America"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Jamaica", .Continent = "North America"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Mexico", .Continent = "North America"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "United States of America", .Continent = "North America"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Australia", .Continent = "Oceania"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "New Zealand", .Continent = "Oceania"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Argentina", .Continent = "South America"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Brazil", .Continent = "South America"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Chile", .Continent = "South America"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Colombia", .Continent = "South America"}) countryInfoCollection.Add(New CountryInfo() With {.CountryName = "Uruguay", .Continent = "South America"}) Return countryInfoCollection End Function
Binding to data
To bind the SfListView to data, set the SfListView.DataSource property to an IEnumerable implementation.
You can bind a property of the underlying data source to display the SfListView by using the DisplayMember property.
sfListView1.DataSource = GetDataSource();
sfListView1.DisplayMember = "CountryName";sfListView1.DataSource = GetDataSource()
sfListView1.DisplayMember = "CountryName"
Grouping
The Windows Forms ListView (SfListView) can display its items in groups by using the SfListView.View.GroupDescriptors property. Create a GroupDescriptor for the property to be grouped and add it to the View.GroupDescriptors collection.
GroupDescriptor object holds the following properties:
• `PropertyName`: Describes name of the property to be grouped.
• `KeySelector`: Describes selector to return the group key.
• `Comparer`: Describes comparer to be applied when sorting takes place.
listView.View.GroupDescriptors.Add(new GroupDescriptor()
{
PropertyName = "Continent",
});listView.View.GroupDescriptors.Add(New GroupDescriptor() With {.PropertyName = “ Continent ”})
Sorting
The SfListView allows sorting its data by using the SfListView.View.SortDescriptors property. Create a SortDescriptor for the property to be sorted and add it to the View.SortDescriptors collection.
SortDescriptor object holds the following three properties:
• `PropertyName`: Describes name of the sorted property.
• `Direction`: Describes an object of type `ListSortDirection` defines the sorting direction.
• `Comparer`: Describes a comparer to be applied when sorting takes place.
listView.View.SortDescriptors.Add(new SortDescriptor()
{
PropertyName = "Continent",
Direction = ListSortDirection.Descending,
});listView.View.SortDescriptors.Add(New SortDescriptor() With {.PropertyName = “Continent”, .Direction = ListSortDirection.Descending})
Filtering
The SfListView supports filtering the records in view by setting a predicate to the SfListView.View.Filter property. Call the View.RefreshFilter method after assigning the Filter property to refresh the view.
To filter the items based on the Continent property of the underlying data, follow the code example.
listView.View.Filter = CustomFilter;
listView.View.RefreshFilter();
public bool CustomFilter(object obj)
{
if ((obj as Country).Continent == "Asia" || (obj as Country).Continent == "North America" || (obj as Country).Continent == "Oceania")
return true;
return false;
}listView.View.Filter = AddressOf CustomFilter
listView.View.RefreshFilter()
public Boolean CustomFilter(Object obj)
If (TryCast(obj, Country)).Continent = "Asia" OrElse (TryCast(obj, Country)).Continent = "North America" OrElse (TryCast(obj, Country)).Continent = "Oceania" Then
Return True
End If
Return False
Selection
SfListView selects an item by setting the SfListView.SelectionMode property to one of One, MultiSimple, MultiExtended, or None based on the requirements. Selected item information can be tracked by using the SfListView.SelectedItem, SfListView.SelectedIndex, and SfListView.SelectedItems properties.
| SelectionMode | Description |
|---|---|
One |
Only a single item can be selected at a time. |
MultiSimple |
Multiple items can be selected without holding a modifier key. |
MultiExtended |
Multiple items can be selected using Ctrl/Shift. |
None |
Selection is disabled. |
The selection operations can be handled with the SelectionChanging and SelectionChanged events of the SfListView.
listView.SelectionMode = SelectionMode.One;listView.SelectionMode = SelectionMode.One