windowsforms-405550-net-net-core-support-migrate-from-winforms-to-blazor.md
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:
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
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
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).
| Windows Forms Component | Blazor Component |
|---|---|
| GridControl | DxGrid |
| GridControl in CardView mode | Possible to implement using DxGridLayout and DxLayoutBreakpoint (see Demo). |
| TreeList | DxTreeList or DxTreeView |
| VGridControl | — |
| PropertyGridControl | — |
| GanttControl | Consider integrating DevExtreme Gantt. |
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.
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:
| Windows Forms Component | Blazor Component |
|---|---|
| LookUpEdit | Based on required functionality, you have the following options: |
| Windows Forms Component | Blazor Component |
|---|---|
| ButtonEdit | Use command buttons. |
| HyperLinkEdit | Use the <a> tag. |
| MemoEdit | DxMemo |
| TokenEdit | DxTagBox<TData, TValue> |
| TextEdit | DxTextBox |
| Windows Forms Component | Blazor Component |
|---|---|
| SpinEdit | DxSpinEdit<T> |
| TimeEdit | DxTimeEdit<T> |
| Windows Forms Component | Blazor Component |
|---|---|
| CheckButton | Enable selection in a DxButtonGroup with one button. |
| DropDownButton | DxDropDownButton, DxSplitButton |
| LabelControl | Use the <span> or <label> tag. |
| SimpleButton | DxButton |
| WindowsUIButtonPanel | If you want to implement navigation between data records, use DxPager. If you want to implement a set of command buttons, use DxButtonGroup. |
| Windows Forms Component | Blazor Component |
|---|---|
| AccordionControl, NavBarControl | DxAccordion or DxTreeView |
| OfficeNavigationBar | DxMenu |
| NavigationPane | Use DxAccordion or DxTreeView to implement routing (see Example). |
| RibbonControl | DxRibbon |
| BarManager | Replicate each Bar and its items with a DxToolbar or DxMenu. |
| PopupMenu | DxContextMenu |
| RadialMenu | — |
| TileBar | — |
| TileNavPane | — |
| ToolboxControl | — |
| Windows Forms Component | Blazor Component |
|---|---|
| XtraForm and other DevExpress Windows Forms | A browser page is equivalent to a form. Use DxPopup or DxWindow to replace child dialogs. |
| DockManager | — |
| LayoutControl, DataLayoutControl | DxFormLayout |
| GroupControl | Use DxFormLayoutGroup within DxFormLayout |
| SplitContainerControl | DxSplitter |
| NavigationFrame | Use DxAccordion or DxTreeView to implement routing (see Example). |
| XtraTabControl, TabPane | DxTabs |
| TabbedView, XtraTabbedMdiManager | Possible to implement a tab header’s context menu functionality (see Example). If you do not need a context menu, use DxTabs. |
| StackPanel | DxStackLayout |
| TablePanel | DxGridLayout |
| SidePanel | Use DxDrawer along with DxSplitter. |
| WizardControl | — |
| WidgetView in Stack Layout mode | DxStackLayout |
| WidgetView in Table Layout mode | DxGridLayout |
| WidgetView in Flow Layout mode | Align document content using display: inline-block. |
| WidgetView in Free Layout mode | — |
| Windows Forms Component | Blazor Component |
|---|---|
| CalcEdit | — |
| ColorEdit | DxColorPalette |
| ColorPickEdit | Embed DxColorPalette into DxDropDownBox (see Demo). |
| ComboBoxEdit | DxComboBox<TData, TValue> |
| DateEdit | DxDateEdit<T> |
| ImageComboBoxEdit | Use templates in a DxComboBox<TData, TValue> (see Demo - Item Template and Demo - Edit Box Display Template). |
| ImageEdit | Embed the [](https://www.w3schools.com/html/html_links.asp) tag[1] into DxDropDownBox to display images. Context menu and editing operations are unavailable. |
| ListBoxControl | DxListBox<TData, TValue> |
| CheckedListBoxControl | Enable check box selection in DxListBox<TData, TValue>. |
| ImageListBoxControl | Use DxListBox<TData, TValue> with templates (see Demo). |
| MemoExEdit | Embed DxMemo into DxDropDownBox. |
| MRUEdit | — |
| PopupContainerEdit | DxDropDownBox |
| PopupGalleryEdit | — |
| FontEdit | Use DxComboBox<TData, TValue> or DxDropDownBox (see Demo). |
| CheckedComboBoxEdit | DxDropDownBox with a custom template (see Demo) |
| BreadCrumbEdit | Consider integrating Bootstrap Breadcrumbs (see Example). |
| TimeSpanEdit | DxTimeEdit<T> |
| Windows Forms Component | Blazor Component |
|---|---|
| XtraMessageBox | DxMessageBox |
| XtraInputBox | DxMessageBox |
| XtraDialog | DxPopup |
| XtraOpenFileDialog, XtraSaveFileDialog | DxFileInput, DxUpload |
| XtraFolderBrowserDialog | — |
| FlyoutDialog | DxPopup |
| FlyoutPanel | DxFlyout |
| AlertControl | DxToast |
| Tooltips | Use DxFlyout or CSS tooltip. |
| Windows Forms Component | Blazor Component |
|---|---|
| CalendarControl | DxCalendar<T> |
| CheckEdit | DxCheckBox<T> |
| SvgImageBox | Use the [](https://www.w3schools.com/html/html_links.asp) tag[1]. |
| RatingControl | — |
| ProgressBarControl | DxProgressBar |
| StepProgressBar | — |
| ProgressPanel | DxWaitIndicator |
| RadioGroup | DxRadioGroup<TData, TValue> |
| PictureEdit | Use the [](https://www.w3schools.com/html/html_links.asp) tag[1] to display images (see Example). Editing operations are unavailable. |
| Splash Screens | DxLoadingPanel, DxWaitIndicator |
| TrackBarControl | Consider integrating DevExtreme Slider. |
| RangeControl | DxRangeSelector |
| RangeTrackBarControl | DxRangeSelector |
| ZoomTrackBarControl | Consider integrating DevExtreme Slider. |
| SparklineEdit | DxSparkline |
| ToggleSwitch | Use DxCheckBox<T> in switch mode. |
| Windows Forms Component | Blazor Component |
|---|---|
| BarCodeControl | Generate bar codes using Office File API[2] and display them within the `` tag. |
| DataNavigator | Use DxPager. If you need to scroll to a specific data record, use DxButtonGroup along with Grid/TreeList APIs. |
| FilterControl, FilterEditorControl | DxFilterBuilder |
| ImageSlider | DxCarousel |
| GalleryControl | — |
| CameraControl | — |
| SearchControl | DxSearchBox |
| Windows Forms Component | Blazor Component |
|---|---|
| RichEditControl | DxRichEdit |
| SchedulerControl | DxScheduler |
| SpreadsheetControl | — |
| SpellChecker | — |
| Office File API | Use the same APIs[2]. |
| Windows Forms Component | Blazor Component |
|---|---|
| PdfViewer | DxPdfViewer |
| PivotGridControl | DxPivotTable |
| Report Viewer | DxReportViewer |
| End-User Report Designer | DxReportDesigner |
| Dashboard Viewer, Dashboard Designer | Blazor Dashboard (includes both Designer and Viewer) |
| Windows Forms Component | Blazor Component |
|---|---|
| ChartControl | DxChart<T>, DxPieChart<T>, DxPolarChart<T> |
| DiagramControl | Possible to integrate DevExtreme Diagram. |
| GaugeControl | DxBarGauge. Consider integrating DevExtreme Circular Bar Gauge (see Example). |
| MapControl | DxMap |
| TreeMapControl | Consider integrating DevExtreme TreeMap. |
| SunburstControl | — |
| SankeyDiagramControl | DxSankey |
| HeatmapControl | — |
You can replace the following WinForms UI templates with a single component in Blazor:
| Windows Forms UI Template | Blazor Component |
|---|---|
| Button Groups | DxButtonGroup |
| Buttons | DxButton |
| DateRangePicker | DxDateRangePicker<T> |
| Windows Forms Concept | Blazor Concept |
|---|---|
| DXErrorProvider | Possible to display validation icons and colored outlines. |
| DXValidationProvider | Use standard Blazor validation mechanisms. |
| Application Skins | Styling and Themes. |
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:
If you have additional technical questions about migration between UI platforms within the DevExpress ecosystem, feel free to contact us: DevExpress Support Center.
Footnotes
Example: ``.
You need a DevExpress Office File API Subscription or DevExpress Universal Subscription license to use this library in production code.