Advanced ComboBox .NET

for  WinForms

  • Advanced Combobox, supports multi-column data display
  • Advanced filtering, grouping and sorting
  • Various formats of column data rendering
  • Includes Currency, Integer, Decimal, Date or DateAndTime, etc.
  • Complex data-binding as well as un-bound modes
  • Supports NotInList event;  Advanced Auto-completion/Suggest features
  • Advanced Data export and preview features
  • Image combobox, Font, Drive list views
  • Supports Read-only mode




BinaryComboBox is an advanced and custom .NET Windows Forms control, providing a flat styled, feature rich and highly configurable, data-bound/unbound, multi-column data display capable ComboBox control.


It is an extended replacement for the standard .NET ComboBox control, providing a wealth of impressive features.


Core Features


Multi-column combobox (supports data-bound and unbound modes)



The control, by default, works in the standard (i.e. the typical single column drop-down) mode.

The control optionally supports a multi-column drop down mode, if you set the appropriate options to do so.


All you will need to do is set DropStyleIsMultiColumn property, and the control will instantly support data display in multi-column drop-down list mode.


Multi-column drop-down list feature supports both ComboBox DropDown style as well as DropDownList style!

This feature allows you the choice of either selecting items directly from the multi-column drop-list or to type in directly to the combobox.


This comes handy when your users know what they are typing in and don't have to necessarily use the multi-column drop-list (although they still can).


The screen-shot gives you a glimpse of the control in its data-bound multicolumn mode, with all the extended filtering, grouping and sorting options switched on.

Powerful data views in multi-column mode (in both data-bound and unbound modes)



BinaryComboBox .NET supports powerful data views.


Apart from the fact that you can filter and sort data yourself by supplying filtered data to the control via the data-binding, the control also supports filtering, sorting and grouping by your users, when the control is in its multi-column data view mode.


The filtering feature supports two modes of data filtering:


  • Built-in filter
  • Custom expression based filtering



Your users will be able to create "query expressions" in the Custom expression based filtering mode, and filter data themselves, on top of the filtered data that you may have provided in your application via the control's data-binding.


With Custom expression mode filtering, your users can write "easy to write" expressions, to perform multiple levels of data filtering.

he built-in filtering mode supports filtering data on a user specified/chosen column in the control's multi-column list-view.


The control also provides support to let the developer decide whether or not, to allow this extended user-interface of filtering, sorting and data grouping facility. This feature can be optionally enabled/disabled by the user through a context menu or by using the UI controls in the filtering/grouping panel.

Advanced UI customization



The control supports extensive UI customization such as setting custom color for drawing the control, border, drop-down button section, the background color for item selection when in dropped-down mode, etc.


You could also customise the rendering mode for drop-down button section of the control i.e. use from various modes available: Microsoft Visual Studio style, our date picker control style, or even ask the control to use your own custom image for the drop down button section completely.

Visual Studio .NET style

Custom image style

Custom image style

Our Date-picker style

Enhanced display styles supported



  • Automatic support for a Drive List style
  • Automatic support for a Font List style
  • Rendering the MS Visual Studio Flat style
  • Rendering the standard Windows style combobox mode
  • Ability to fully support Control painting with custom colors (with Alpha-blending support)
  • Mouse hovering effects
  • Automatic support for emulating XP theme rendering
  • Automatic identification of the Operating system

Advanced text alignment customization



The control supports different text alignment options viz.,


  • Left
  • Right
  • Center


The text alignment is customizable for the control item text as well as the drop-down items text.







The text alignment can be mix-and-matched - i.e. you could pick one text alignment for the control text and a completely another text alignment for the drop-down item text.



See images below:

Advanced text alignment customization: Multi-column data columns



The control supports customizing the column text alignment for the multi-column drop-down window, and also to align the column data inside the auto-complete multi-column drop-down view.


Two new properties have been introduced that will enable this feature, viz.,

  • MultiColumnWindowColumnsHorizontalAlignments: This is a property of type IList<HorizontalAlignment>
  • ShouldApplyMultiColumnWindowColumnsAlignmentsToAutoCompleteDropDown: This is a property of type Boolean

You can set the property MultiColumnWindowColumnsHorizontalAlignments to a list of HorizontalAlignment values, where each one represents the corresponding (index) column in the “to be shown” multi-column window.        


The feature means that the control supports custom alignment for its columns on a per-column basis too - i.e., you can set the first 2 columns to be Left aligned, the third and fourth to be Center aligned, and the remaining columns to be Right aligned, for example.






Image Support



While in the image combobox mode, you can show images next to the items on the drop down list, in both normal and selected states of the control.


Users can specify size of the image to be drawn in the image combobox mode. You are now relieved from the tedious pain of overriding various custom draw routines of ComboBox control.

Image combobox with rectangle around the image



The control has the ability to draw a rectangle around the image.

With a simple property setting, this rectangle drawing can be switched off.

Data exporting / reporting



The control, in its multi-column mode, can let the users to export/save the view data into a CSV output file.

This feature can also be enabled/disabled, by simply setting a property setting.


This option can be enabled both using the UI controls, as well as through a context menu.

Supports powerful querying of data



Your users will be able to create "query expressions" in the Custom expression based filtering mode, and filter data themselves, on top of the filtered data that you may have provided in your application via the control's data-binding.


With Custom expression mode filtering, your users can write "easy to write" expressions, to perform multiple levels of data filtering.

he built-in filtering mode supports filtering data on a user specified/chosen column in the control's multi-column list-view.


The control also provides support to let the developer decide whether or not, to allow this extended user-interface of filtering, sorting and data grouping facility. This feature can be optionally enabled/disabled by the user through a context menu or by using the UI controls in the filtering/grouping panel.

Extended User-experience



The control displays a pretty-looking drop-down window, displaying message to the user, to let them know that the control does not have any data to display at that point in time, when the user clicks on the drop-down button.

This can typically happen when the control is not bound to a data source, or there is no data in the attached data-source to display, at the moment.


This feature comes in handy to make your UI and your user's UX (User experience) enjoyable! Rather than to display an empty window to indicate there is no data to display, a pretty-looking window (as you can see in the left hand side) displaying a no-data-available message, makes the UX enjoyable.


The message text is configurable by the developer, via a property setting on the control.

Multi-column mode renders column data in varying data formats



The control when run in its multi-column mode, is capable of rendering column data in various data format types like so:


  • Currency data type; where you can specify how many decimal places you want the control to display the data
  • Integer data type; where you can ask the control to render the thousands commas separator
  • Decimal data type; where you can ask the control to render decimal value with how many ever decimal precision you want it to render
  • Date or Date and Time data type ; where you can ask the control to render the date as just date or with full custom date string as desired
  • Text data column; this is default mode of rendering the data in the multi-column view.


Note that the view will still render the data as string data, but it will format it to any of the above listed data formats before rendering it in the view and then render it as text data.


The screen-shot below demonstrates the control rendering the various column data in the desired data formats:

Powerful design time support



The control comes with strong design-time support. For enabling easy setup of all crucial and important properties, the control implements custom code to support displaying these properties via the design-time smart tags UI - i.e. the designer actions list pop-up.


The list includes properties, for example, for you to easily complex bind the control to an IBindingList datasource With this design time infrastructure in place, you will not need to write a single line of code to get the controls working for you.

Support both Data-bound and unbound modes



BinaryComboBox .NET supports both data-bound and unbound modes, both in its standard (single column) and multi-column drop-down data display modes.


The data-binding support includes working with DataSources implementing interfaces IList, IListSource and IBindingList. Data-binding to multi-column mode is made extremely simple, especially with our new custom design-time designer-action list feature. You won't need to write a single line of code to data-bind and even to complex data-bind the control.


Of course, to enable the other more advanced features in multi-column display mode, like grouping of data, plugging-in your own IComparer implementation for custom sorting of columns, etc, there are other relevant properties to set!


But all that is needed is setting up some properties, typically, without even leaving your IDE's designer.

Multi-column mode without header and footer



BinaryComboBox .NET multi-column drop-down list can also be configured to be displayed without the header and footer areas.

Advanced Sorting capabilities



a) Sorting on string


The control exposes properties and events to support advanced sorting capability for sorting data in the columns (while the control is in multi-column style). Apart from the default built-in sorter implementation, you could choose to plug-in your own IComparer implementation to sort any type of column data.

b) Sorting on numbers


For example, you could choose to plug-in your custom IComparer implementation to sort a given column whose data you judge to be of, say, percentage types, or belonging to a particular category type!


The control exposes a property to pick your custom IComparer implementation, and at run-time will execute your custom sorting implementation for the given column.

The control also raises events while about to sort, so that you can even cancel (if need be!) the sorting (on a given column) that is about to happen.


You get that level of fine-grain control via properties and events in this control.

Data grouping based on columns



The control provides out-of-the-box support for grouping of data, while it is set up to run in multi-column data display mode.


Via simple-to-use properties, you can set-up grouping-based multi-column data display, by specifying which column to group the data by, and the control will group the data based on that column and display the multi-column data view.


By using the features of DataView object, you can filter your source data and assign the filtered data as the data source to the control and thereby be able to view just the filtered data, in the control's multi-column data display view.


This feature, of course, is also available in the control's standard (single-column) data display mode.

Ability to custom specify "row selection" column name (in multi-column mode)



With this feature, you could custom specify the specific column name that should be used by the multi-column drop-down list, in order to decide which row to automatically select, when the user types a character of text when the list is in focus.


Typically (and by default), when the user opens the drop-down-list in multi-column mode, and then types a character of text in order for the list to select a row of item in the list based on what was typed by the user, the list would use the first column of the list as the driving column whose item text decides which row to automatically be selected.


By setting a special property (of type string), you could ask the control to override the above default behavior, and make it select an appropriate row where the specified column’s text is used to perform data match and select the row.

Ability to Drag-and-drop of column headers



The control supports the drag-and-drop of column headers in the multi-column drop-list window, thereby allowing your users to visually re-position/re-order the columns.

ComboBox text Auto-Completion



The control automatically selects the best match of an item from the list, as you type in a text, saving time selecting items from a possible long drop-down list.


Also, the control exposes a property (i.e. AutoCompleteIsCaseSensitive, a boolean property), to let the user decide whether the Auto-Completion feature will be case-sensitive or not.


A performance efficient routine has been added to support handling faster Auto-Completion, especially to cope-up with high-speed data entry users.

Auto-Completion feature is available on Data-bound mode as well



The control supports auto-completion of text in data-bound mode - where it will be able to retrieve any closely matching data items from the attached data-source, while you type-in text into BinaryComboBox control.

Customization of multi-column auto-completion



Using the property AutoCompleteStyleForMultiColumnModeIsMultiColumn, when the control is in its multi-column mode, and the Autocomplete feature is enabled, the control will display the "auto-completion suggestion list" drop-down list with multi-columns of data (i.e. all columns data from the data source) rather than the default behavior of displaying the auto-completion suggestion list with only one column of data that is relevant to the values in the DisplayMember column.


With this feature, when the user types-in characters into the text area of the combobox, the auto-completion "suggestion list" will display the list with all columns of data as is closely relevant to the text characters so far typed-in by the user.


Also, with the latest release (Release 22), the control has been enhanced such that it will ensure that it continues to display the auto-completion multi-column drop-list window and at the same time keep the input focus on the combobox text area, so that the user can continue to input more text (or update it) and the drop-list can show the applicable items in its view as is relevant based on what the user has typed in so far.


A new property ShouldAllowUserInputWhileProcessingMultiColumnAutoCompleDropDownView has been introduced in the recent release to enable the continued displaying and refreshing of its data while the user types in text.

Read-only feature support



BinaryComboBox .NET supports a property called ComboBoxIsReadOnly , which when set to true, can set the Edit control portion of the ComboBox control to read-only mode!


This feature lets your users to perform clipboard operations on the ComboBox text, while at the same time, blocking them from editing the combobox text.

Ability to cancel the drop-down list window

Support for the NotInList event



The control raises an event NotInList, whenever the user types-in text (item) into the control's text area, and that text (item) is not available in the control's current list of items.


This event is available for both the control's Multi-column drop-list mode and the standard mode.