Winforms (.NET Core 3)是否支持所有.NET Framework控件?

5
我们刚刚转向.NET,并尝试使用C#/.NET重新创建旧项目。我们听说.NET Core是新项目的选择,我们非常有兴趣使用WinForms进行开发。因此,我一直在尝试使用Visual Studio 2019 Preview (16.5.0 Preview 2.0)进行实验。但我注意到并非所有控件都会显示在设计器中(我知道设计器只是预览版中新增的)。因此,我尝试在Form1.designer.cs中手动添加控件,但我不确定这是否是正确的方法,或者我们应该等待更成熟的版本或者直接使用.NET Framework?附注:如果WPF对.NET Core支持更好,我们也可以使用它。

enter image description here

谢谢你


2
不是所有的.NET 1.x控件,比如Menu都被移除了。这些变更在此处有所描述。那些控件在2006年就被其他控件替代了,不应该再使用,文档中有解释。 - Panagiotis Kanavos
“所有控件都显示出来”是指“没有显示WebBrowser控件”,还是其他的意思? - Selvin
5
另一方面,WebBrowser 是一个完全不同的东西 - 它是IE,没有网站再支持IE了,除非是意外情况。即使可用,也不应该使用它。我们说的也不是IE 10。 - Panagiotis Kanavos
4
@RedZ,问题在于WebBrowser本身。你想要在其中展示的任何网站都很可能无法工作。人们正在使用CefSharp,它使用Chromium引擎。该项目正在积极维护。另一方面,不要期望微软会进一步开发WebBrowser,特别是现在他们甚至用Chromium替换了Edge。 - Panagiotis Kanavos
设计师已经可用。在最新的VS 2019预览版中,您可以在“选项 > 实验性功能”中启用它。不过它仍处于实验阶段。此外,设计师并不能告诉您控件本身是否有效。有关破坏性更改的列表如下。 - Panagiotis Kanavos
显示剩余11条评论
2个回答

8

.NET Core 3是否支持所有.NET Framework控件?

不是全部支持。实际上,在.NET Core 3.1中,一些过时的Windows Forms控件(如DataGrid,ToolBar,ContextMenu,Menu,MainMenu,MenuItem及其子组件)已被删除。

您需要使用DataGridView,ToolStrip,ContextMenuSrtip,MenuStrip及其子组件代替。

要查看已删除的控件列表和升级所需的操作,请参阅:

我注意到并非所有控件都出现在设计器中

是的,设计器支持仍在开发中,一些控件和功能仍无法通过设计器获得。但是,如果您不想使用设计器,只需要运行时支持,就可以使用由.NET CORE 3.1支持但没有设计器支持的控件。

我们应该等待更成熟的版本还是使用.NET Framework?

在撰写本答案时,如果您需要经常使用设计器,则仍不建议将应用程序移植到.NET Core。尽管在VS 2019版本16.5 Preview 1中内置了设计器支持,但设计器仍在开发中,某些重要功能如数据绑定,某些容器控件,本地化,MenuStrip和ToolStrip,视觉继承等仍不可用。

要查看正在开发中的功能列表,请参阅:


2
这就是我一直在寻找的答案,经过查看许多答案和进行一些研究(并阅读了微软的文章),我们决定使用.NET Core和WPF,因为我们更习惯使用XAML(不需要设计师),因为我们也以同样的方式使用Xamarin。 - RedZ
为什么您建议在.NET Core 3中使用WinForms的DataGridView?它不可用! - Jens Mander
@JensMander 虽然 DataGridView 仍然没有设计时支持,但是你可以轻松地在代码中使用它。请参考这篇文章作为一个示例来学习如何在代码中使用它。 - Reza Aghaei

1
这个简单的技巧可以轻松激活所有缺失的控件来启动你的Winforms .Net Core 3.1。
在你执行下面的步骤之前,请知道这仅适用于测试,还未适用于生产。如果被确认适用于最终生产应用程序,我会更新此帖子。
这个解决方案对于我使用的 .Net Framework 4.8 和 .net Core 3.1 已经验证。
具体操作如下: 1- 创建你的Winforms .Net Core项目。 2- 点击 project_name.csproj 并改变以下内容:
    <TargetFrameworks>netcoreapp3.1</TargetFrameworks>
转换为中文后的文本为:

到这个新的:

    <TargetFrameworks>net48;netcoreapp3.1</TargetFrameworks>

3- 然后打开 Program.cs 并注释掉这个部分

Application.SetHighDpiMode(HighDpiMode.SystemAware);
就像这样:

//Application.SetHighDpiMode(HighDpiMode.SystemAware);
这个解决方案会添加所有控件。只需关闭解决方案并重新打开即可。
4- 当你完成应用程序后,只需将所有内容恢复为默认设置,如下所示:
点击 project_name.csproj 并更改以下内容:
    <TargetFrameworks>netcoreapp3.1</TargetFrameworks>
对于program.cs的取消注释,即使我回滚到默认设置,应用程序仍会在此行出现错误,因此我将其保持为已注释状态。
感谢Kirsan。

https://devblogs.microsoft.com/dotnet/updates-to-net-core-windows-forms-designer-in-visual-studio-16-5-preview-1/#comment-4562


1
我还没有机会尝试这个技巧,但很快就会尝试。问题是WinForms .NET Core的设计师非常有缺陷,它偶尔会冻结,有时无法删除/移动控件。 - RedZ
这根本不起作用。相反,会弹出很多错误,设计师也无法启动。 - Jens Mander
嗯,已经过去8个月了。我可以确认它仍然存在极大的漏洞。有人为WinForms .NET Core提出了替代的可视化设计工具吗? - Menno van Leeuwen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接