Loading...
Loading...
Implement and configure Syncfusion MultiColumnComboBox control in Windows Forms - an advanced combobox with multiple columns in dropdown and virtual data binding for large datasets. Use when creating dropdown lists with multiple data fields, DataSource binding, DisplayMember/ValueMember configuration, or column headers in dropdown. Covers filtered dropdown lists and replacing standard ComboBox with multi-column alternatives.
npx skill4agent add syncfusion/winforms-ui-components-skills syncfusion-winforms-multicolumn-comboboxDataSourceDisplayMemberValueMemberShowColumnHeaderAllowFilteringStyleAlphaBlendSelectionColorDropDownWidthusing Syncfusion.Windows.Forms.Tools;
using System.Data;
// Create DataTable with employee data
DataTable employeeData = new DataTable("Employees");
employeeData.Columns.Add("EmployeeID");
employeeData.Columns.Add("FirstName");
employeeData.Columns.Add("LastName");
employeeData.Columns.Add("Department");
employeeData.Columns.Add("Position");
// Add sample data
employeeData.Rows.Add("1001", "John", "Smith", "Engineering", "Developer");
employeeData.Rows.Add("1002", "Mary", "Johnson", "Sales", "Manager");
employeeData.Rows.Add("1003", "Robert", "Williams", "HR", "Specialist");
employeeData.Rows.Add("1004", "Sarah", "Davis", "Marketing", "Coordinator");
// Create and configure MultiColumnComboBox
MultiColumnComboBox employeeCombo = new MultiColumnComboBox();
employeeCombo.Location = new Point(20, 20);
employeeCombo.Size = new Size(300, 21);
// Bind data
employeeCombo.DataSource = employeeData;
employeeCombo.DisplayMember = "FirstName";
employeeCombo.ValueMember = "EmployeeID";
// Configure appearance
employeeCombo.ShowColumnHeader = true;
employeeCombo.Style = VisualStyle.Office2016Colorful;
employeeCombo.DropDownWidth = 500;
// Add to form
this.Controls.Add(employeeCombo);Imports Syncfusion.Windows.Forms.Tools
Imports System.Data
' Create DataTable with employee data
Dim employeeData As New DataTable("Employees")
employeeData.Columns.Add("EmployeeID")
employeeData.Columns.Add("FirstName")
employeeData.Columns.Add("LastName")
employeeData.Columns.Add("Department")
employeeData.Columns.Add("Position")
' Add sample data
employeeData.Rows.Add("1001", "John", "Smith", "Engineering", "Developer")
employeeData.Rows.Add("1002", "Mary", "Johnson", "Sales", "Manager")
employeeData.Rows.Add("1003", "Robert", "Williams", "HR", "Specialist")
employeeData.Rows.Add("1004", "Sarah", "Davis", "Marketing", "Coordinator")
' Create and configure MultiColumnComboBox
Dim employeeCombo As New MultiColumnComboBox()
employeeCombo.Location = New Point(20, 20)
employeeCombo.Size = New Size(300, 21)
' Bind data
employeeCombo.DataSource = employeeData
employeeCombo.DisplayMember = "FirstName"
employeeCombo.ValueMember = "EmployeeID"
' Configure appearance
employeeCombo.ShowColumnHeader = True
employeeCombo.Style = VisualStyle.Office2016Colorful
employeeCombo.DropDownWidth = 500
' Add to form
Me.Controls.Add(employeeCombo)using System.Data.OleDb;
// Create data adapter and dataset
OleDbDataAdapter adapter = new OleDbDataAdapter(
"SELECT CustomerID, CompanyName, ContactName, Country FROM Customers",
connectionString);
DataSet dataSet = new DataSet();
adapter.Fill(dataSet, "Customers");
// Bind to MultiColumnComboBox
multiColumnComboBox1.DataSource = dataSet.Tables["Customers"];
multiColumnComboBox1.DisplayMember = "CompanyName";
multiColumnComboBox1.ValueMember = "CustomerID";
multiColumnComboBox1.ShowColumnHeader = true;
multiColumnComboBox1.DropDownWidth = 600;// Enable filtering
multiColumnComboBox1.AllowFiltering = true;
// Handle text changed for custom filter
multiColumnComboBox1.TextChanged += (sender, e) =>
{
multiColumnComboBox1.Filter = FilterRecords;
};
// Custom filter predicate
private bool FilterRecords(object o)
{
var item = o as DataRowView;
if (item != null)
{
string searchText = multiColumnComboBox1.TextBox.Text.ToLower();
// Filter by any column
return item["ProductName"].ToString().ToLower().Contains(searchText) ||
item["Category"].ToString().ToLower().Contains(searchText);
}
return false;
}// Load data
DataTable products = GetProductData();
multiColumnComboBox1.DataSource = products;
multiColumnComboBox1.DisplayMember = "ProductName";
multiColumnComboBox1.ValueMember = "ProductID";
// Hide internal ID columns
multiColumnComboBox1.ListBox.Grid.Model.Cols.Hidden["ProductID"] = true;
multiColumnComboBox1.ListBox.Grid.Model.Cols.Hidden["SupplierID"] = true;
// Handle selection to get all column data
multiColumnComboBox1.SelectedValueChanged += (sender, e) =>
{
if (multiColumnComboBox1.SelectedIndex != -1)
{
DataRowView row = multiColumnComboBox1.Items[multiColumnComboBox1.SelectedIndex] as DataRowView;
string productName = row["ProductName"].ToString();
decimal price = Convert.ToDecimal(row["Price"]);
string category = row["Category"].ToString();
MessageBox.Show($"Selected: {productName}\nPrice: {price:C}\nCategory: {category}");
}
};| Property | Type | Description |
|---|---|---|
| DataSource | object | Data source for the combobox (DataTable, DataView, DataSet, List<T>) |
| DisplayMember | string | Name of the data source property to display in the text area |
| ValueMember | string | Name of the data source property to use as the value |
| MultiColumn | bool | Enables/disables multiple columns (true by default) |
| ShowColumnHeader | bool | Shows or hides column headers in dropdown |
| AllowFiltering | bool | Enables custom filtering support |
| Filter | Predicate<object> | Custom filter predicate for filtering items |
| Style | VisualStyle | Visual theme (Office2003, OfficeXP, VS2005, Office2007, Metro, Office2016*) |
| Office2007ColorTheme | Office2007Theme | Office 2007 color scheme (Blue, Silver, Black, Managed) |
| AlphaBlendSelectionColor | Color | Color for alpha-blended selection highlighting |
| DropDownWidth | int | Width of the dropdown popup in pixels |
| ListBox.Grid | GridListControl | Access to the underlying grid for column customization |