5

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 much interested in using WinForms for this, so i have been experimenting with Visual Studio 2019 Preview (16.5.0 Preview 2.0), but i've noticed that not all the controls show up in the designer (i know the designer was just added to the preview), so i tried to add the controls manually on Form1.designer.cs, but im not really sure if this is the right way to do this or should we just wait for more mature releases or just use .NET Framework ? PS: We can go with WPF too if its more supported with .NET Core.

enter image description here

Thank you

16
  • 2
    No - some of the .NET 1.x controls like Menu were removed. The changes are described here. Those controls were replaced by others back in 2006 and shouldn't be in use, something explained in the docs. Commented Jan 28, 2020 at 16:22
  • by "all the controls show up" you mean "it's not showing WebBrowser control" or more? Commented Jan 28, 2020 at 16:22
  • 5
    WebBrowser on the other hand is a different beast - it's IE and no site supports IE any more, except by accident. You shouldn't use it even if it's available. We aren't talking about IE 10 either. Commented Jan 28, 2020 at 16:23
  • @Selvin its only showing just a few basic controls but i think they just arent supported in the designer , because after adding WebBrowser manually, it showed up in the designer with a big red cross on it Commented Jan 28, 2020 at 16:23
  • 4
    @RedZ the problem is WebBrowser itself. It's quite likely that whatever site you want to display in it won't work. People are using CefSharp instead, which uses the Chromium engine. That project is actively maintained. Don't expect MS to further develop WebBrowser on the other hand, especially now that they replaced even Edge with Chromium Commented Jan 28, 2020 at 16:25

2 Answers 2

8

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:

Sign up to request clarification or add additional context in comments.

3 Comments

Thats the answer i was looking for, after checking many answers and doing a bit of research (and reading the articles from microsoft) we decided to go with .NET Core and WPF since we are more comfortable with using XAML (no designer needed) since we also Xamarin the same way.
Why do you recommend using DataGridView with WinForms in .NET Core 3? It is not available!
@JensMander Although DataGridView still doesn't have design-time support, but you can easily use it in code. Take a look at this post as an example to learn how to use it in code.
1

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

3 Comments

I havent had the chance to try this trick yet, but i will very soon, the problem is that the designer for WinForms .NET Core is super buggy, it freezes now and then and sometimes it cant remove/move controls
This is not working at all. Instead a lot of errors pop up and the designer wouldn't start.
Well, it has been 8 months since. And I can confirm it is still extremely buggy. Anyone came up with an alternative visual designer for WinForms .NET Core?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.