We have just moved to .NET and we are trying to recreate one of our old projects with C#/.NET, we have heard that .NET Core is the way to go for new projects and we are very
Does Winforms (.NET Core 3) support all .NET Framework controls?
No, it doesn't. In fact in .NET Core 3.1 some of the outdated Windows Forms controls like DataGrid
, ToolBar
, ContextMenu
, Menu
, MainMenu
, MenuItem
, and their child components were removed.
You need to use DataGridView
, ToolStrip
, ContextMenuSrtip
, MenuStrip
and their child components instead.
To see a list of removed controls and required actions for upgrade take a look at:
I've noticed that not all the controls show up in the designer
Right, the design-time support is still under development and some of the controls and feature are still not available through designer. However if you don't want to use designer, you just need run-time support, use the controls which are supported by .NET CORE 3.1 but don't have design-time support.
Should we just wait for more mature releases or just use .NET Framework?
At time of writing this answer, if you need to use designer on a regular basis, it's still not recommended to port your application to .NET Core. While there is builtin designer support in VS 2019 Version 16.5 Preview 1, but the designer is still under development and some important features like data-binding, some of container controls, localization, MenuStrip and ToolStrip, Visual inheritance and so on ate not available.
To see the list of under development features take a look at:
This simple trick can easily activate all the missing controls to start your Winforms .Net Core 3.1
Before you do these steps, just know that is only confirmed for testing, and not for production yet. one It is confirmed for final production application, I will update the post.
this solution is confirmed for me with .Net Framework 4.8 and .net Core 3.1.
with some steps as following: 1- Create your winofrms .Net Core project. 2- Press on project_name.csproj and change this:
<TargetFrameworks>netcoreapp3.1</TargetFrameworks>
to this new one:
<TargetFrameworks>net48;netcoreapp3.1</TargetFrameworks>
3- Then open Program.cs and comment this
Application.SetHighDpiMode(HighDpiMode.SystemAware);
To be like this:
//Application.SetHighDpiMode(HighDpiMode.SystemAware);
this solution will add all the controls. just close the solution and reopen.
4- After you finish your application, just change everything to default again like this:
Press on project_name.csproj and change this:
<TargetFrameworks>netcoreapp3.1</TargetFrameworks>
For the program.cs uncomment, even after I rolled back to default, the application give an error for this line, so I keep it commented
Thanks goes for Kirsan
https://devblogs.microsoft.com/dotnet/updates-to-net-core-windows-forms-designer-in-visual-studio-16-5-preview-1/#comment-4562