Back to Devexpress

Migrate Windows Forms Applications to ASP.NET Core Blazor

windowsforms-405550-net-net-core-support-migrate-from-winforms-to-blazor.md

latest28.8 KB
Original Source

Migrate Windows Forms Applications to ASP.NET Core Blazor

  • Dec 11, 2025
  • 7 minutes to read

When you migrate a Windows Forms application to ASP.NET Core Blazor, you can reuse the data layer and business logic, but you need to reconstruct the UI from scratch. This article contains information related to:

  • Resources that describe migration in general and application architecture choices that facilitate the transition.
  • Tables that list DevExpress Windows Forms controls and their DevExpress Blazor counterparts.

Why Use DevExpress UI Controls for Blazor

The DevExpress Blazor Component Suite ships with components and development libraries for Blazor Server, Blazor WebAssembly, and Blazor Hybrid hosting models. The suite includes a comprehensive set of UI controls, such as Data Grid, Pivot Grid, Scheduler, Chart, Data Editors, and Reporting. Review the complete list of available components in our documentation.

DevExpress Blazor Components can be purchased as part of the following DevExpress subscriptions: ASP.NET and Blazor (includes DevExtreme), DXperience , and Universal.

Run DemoDownload: Free 30-Day Trial

How to Migrate a Project: Useful Resources

For information on how to migrate your project to a different platform, review the following resources:

Watch Video: Modernizing your desktop: From WinForms to Blazor, Azure, and AI

DevExpress UI Components: Equivalents for Different Platforms

Most of our product lines contain similar component sets. Regardless of the platform, developers usually require the same UI controls for their business apps and websites.

Tables below list DevExpress Windows Forms components and their DevExpress Blazor equivalents (or ways to implement similar functionality).

Data Grids

Windows Forms ComponentBlazor Component
GridControlDxGrid
GridControl in CardView modePossible to implement using DxGridLayout and DxLayoutBreakpoint (see Demo).
TreeListDxTreeList or DxTreeView
VGridControl
PropertyGridControl
GanttControlConsider integrating DevExtreme Gantt.

Data Binding

Blazor Grid and TreeList allow you to implement the same set of data binding scenarios. Refer to the following help topics for information on data binding:

If our standard data source bindings do not meet your business requirements, you can implement your own data provider. Refer to the following example for implementation details: Blazor Grid - Custom Data Source Binding using Entity Framework Core.

Export to CSV, PDF, and XLS

Windows Forms Grid and TreeList controls use the same internal export engine as their Blazor counterparts. Public API names may differ. Refer to the following documentation section to find Blazor equivalents:

Lookup Editors

Windows Forms ComponentBlazor Component
LookUpEditBased on required functionality, you have the following options:
  1. Use DxComboBox<TData, TValue> with columns.
  2. Place DxGrid into DxDropDownBox.DropDownBodyTemplate (see Demo). | | GridLookUpEdit | Place DxGrid into DxDropDownBox.DropDownBodyTemplate (see Demo). | | SearchLookUpEdit | Place DxGrid into DxDropDownBox.DropDownBodyTemplate (see Demo). | | TreeListLookUpEdit | Place DxTreeList into DxDropDownBox.DropDownBodyTemplate (see Demo). |

Text Editors

Windows Forms ComponentBlazor Component
ButtonEditUse command buttons.
HyperLinkEditUse the <a> tag.
MemoEditDxMemo
TokenEditDxTagBox<TData, TValue>
TextEditDxTextBox

Numeric Editors

Windows Forms ComponentBlazor Component
SpinEditDxSpinEdit<T>
TimeEditDxTimeEdit<T>

Buttons and Labels

Windows Forms ComponentBlazor Component
CheckButtonEnable selection in a DxButtonGroup with one button.
DropDownButtonDxDropDownButton, DxSplitButton
LabelControlUse the <span> or <label> tag.
SimpleButtonDxButton
WindowsUIButtonPanelIf you want to implement navigation between data records, use DxPager. If you want to implement a set of command buttons, use DxButtonGroup.
Windows Forms ComponentBlazor Component
AccordionControl, NavBarControlDxAccordion or DxTreeView
OfficeNavigationBarDxMenu
NavigationPaneUse DxAccordion or DxTreeView to implement routing (see Example).
RibbonControlDxRibbon
BarManagerReplicate each Bar and its items with a DxToolbar or DxMenu.
PopupMenuDxContextMenu
RadialMenu
TileBar
TileNavPane
ToolboxControl

Forms & Layout

Windows Forms ComponentBlazor Component
XtraForm and other DevExpress Windows FormsA browser page is equivalent to a form. Use DxPopup or DxWindow to replace child dialogs.
DockManager
LayoutControl, DataLayoutControlDxFormLayout
GroupControlUse DxFormLayoutGroup within DxFormLayout
SplitContainerControlDxSplitter
NavigationFrameUse DxAccordion or DxTreeView to implement routing (see Example).
XtraTabControl, TabPaneDxTabs
TabbedView, XtraTabbedMdiManagerPossible to implement a tab header’s context menu functionality (see Example). If you do not need a context menu, use DxTabs.
StackPanelDxStackLayout
TablePanelDxGridLayout
SidePanelUse DxDrawer along with DxSplitter.
WizardControl
WidgetView in Stack Layout modeDxStackLayout
WidgetView in Table Layout modeDxGridLayout
WidgetView in Flow Layout modeAlign document content using display: inline-block.
WidgetView in Free Layout mode

Item Selectors

Windows Forms ComponentBlazor Component
CalcEdit
ColorEditDxColorPalette
ColorPickEditEmbed DxColorPalette into DxDropDownBox (see Demo).
ComboBoxEditDxComboBox<TData, TValue>
DateEditDxDateEdit<T>
ImageComboBoxEditUse templates in a DxComboBox<TData, TValue> (see Demo - Item Template and Demo - Edit Box Display Template).
ImageEditEmbed the [](https://www.w3schools.com/html/html_links.asp) tag[1] into DxDropDownBox to display images. Context menu and editing operations are unavailable.
ListBoxControlDxListBox<TData, TValue>
CheckedListBoxControlEnable check box selection in DxListBox<TData, TValue>.
ImageListBoxControlUse DxListBox<TData, TValue> with templates (see Demo).
MemoExEditEmbed DxMemo into DxDropDownBox.
MRUEdit
PopupContainerEditDxDropDownBox
PopupGalleryEdit
FontEditUse DxComboBox<TData, TValue> or DxDropDownBox (see Demo).
CheckedComboBoxEditDxDropDownBox with a custom template (see Demo)
BreadCrumbEditConsider integrating Bootstrap Breadcrumbs (see Example).
TimeSpanEditDxTimeEdit<T>

Messages, Notifications, and Dialogs

Windows Forms ComponentBlazor Component
XtraMessageBoxDxMessageBox
XtraInputBoxDxMessageBox
XtraDialogDxPopup
XtraOpenFileDialog, XtraSaveFileDialogDxFileInput, DxUpload
XtraFolderBrowserDialog
FlyoutDialogDxPopup
FlyoutPanelDxFlyout
AlertControlDxToast
TooltipsUse DxFlyout or CSS tooltip.

Editors Without Textboxes

Windows Forms ComponentBlazor Component
CalendarControlDxCalendar<T>
CheckEditDxCheckBox<T>
SvgImageBoxUse the [](https://www.w3schools.com/html/html_links.asp) tag[1].
RatingControl
ProgressBarControlDxProgressBar
StepProgressBar
ProgressPanelDxWaitIndicator
RadioGroupDxRadioGroup<TData, TValue>
PictureEditUse the [](https://www.w3schools.com/html/html_links.asp) tag[1] to display images (see Example). Editing operations are unavailable.
Splash ScreensDxLoadingPanel, DxWaitIndicator
TrackBarControlConsider integrating DevExtreme Slider.
RangeControlDxRangeSelector
RangeTrackBarControlDxRangeSelector
ZoomTrackBarControlConsider integrating DevExtreme Slider.
SparklineEditDxSparkline
ToggleSwitchUse DxCheckBox<T> in switch mode.

Utility Controls

Windows Forms ComponentBlazor Component
BarCodeControlGenerate bar codes using Office File API[2] and display them within the `` tag.
DataNavigatorUse DxPager. If you need to scroll to a specific data record, use DxButtonGroup along with Grid/TreeList APIs.
FilterControl, FilterEditorControlDxFilterBuilder
ImageSliderDxCarousel
GalleryControl
CameraControl
SearchControlDxSearchBox

Office-Inspired Controls

Windows Forms ComponentBlazor Component
RichEditControlDxRichEdit
SchedulerControlDxScheduler
SpreadsheetControl
SpellChecker
Office File APIUse the same APIs[2].

Reporting and Analytics

Windows Forms ComponentBlazor Component
PdfViewerDxPdfViewer
PivotGridControlDxPivotTable
Report ViewerDxReportViewer
End-User Report DesignerDxReportDesigner
Dashboard Viewer, Dashboard DesignerBlazor Dashboard (includes both Designer and Viewer)

Data Visualization

Windows Forms ComponentBlazor Component
ChartControlDxChart<T>, DxPieChart<T>, DxPolarChart<T>
DiagramControlPossible to integrate DevExtreme Diagram.
GaugeControlDxBarGauge. Consider integrating DevExtreme Circular Bar Gauge (see Example).
MapControlDxMap
TreeMapControlConsider integrating DevExtreme TreeMap.
SunburstControl
SankeyDiagramControlDxSankey
HeatmapControl

UI Templates

You can replace the following WinForms UI templates with a single component in Blazor:

Windows Forms UI TemplateBlazor Component
Button GroupsDxButtonGroup
ButtonsDxButton
DateRangePickerDxDateRangePicker<T>

Concepts

Windows Forms ConceptBlazor Concept
DXErrorProviderPossible to display validation icons and colored outlines.
DXValidationProviderUse standard Blazor validation mechanisms.
Application SkinsStyling and Themes.

Inplace Editors

Windows Forms grid-like controls allow you to automatically generate a data editor based on the data field type. The editor is used to display and edit cells in a specific column.

Blazor Grid and TreeList use a similar column editor architecture, albeit with a smaller number of built-in editor types. However, you can also specify custom cell templates, which allow you to display components or custom HTML markup in cells. Refer to the following topics for additional information:

Windows Forms Bar Manager and Ribbon Control allow you to embed data editors with a specially designed bar item type - BarEditItem. In Blazor, the technique depends on the bar-like control. Use the following links to find instructions:

Have a Question?

If you have additional technical questions about migration between UI platforms within the DevExpress ecosystem, feel free to contact us: DevExpress Support Center.

Footnotes

  1. Example: ``.

  2. You need a DevExpress Office File API Subscription or DevExpress Universal Subscription license to use this library in production code.