温故知新,.Net Core遇见WinForms(Windows Form)客户端窗体框架,在DotNet Core大一统基础上老树发芽

什么是WinForm

https://docs.microsoft.com/zh-cn/dotnet/desktop/winforms

Windows窗体(Windows Form),简称WinForms,是一个可创建适用于Windows的丰富桌面客户端应用的UI框架。Windows窗体开发平台支持广泛的应用开发功能,包括控件、图形、数据绑定和用户输入。 Windows 窗体采用Visual Studio中的拖放式可视化设计器,可轻松创建Windows窗体应用。

image

WinForm的来世今生

说起WinForm,其实很多现在的程序员已经是不用它了,原因是其实它已经是老爷爷了,微软推出WinForms之后,继而推出了WPFUWPWinUIMAUI等更新的客户端应用框架。

image

但是论资历,在Windows平台,先是经历了Windows API + C,江湖人称Win32,随后C++的发展,诞生了经典的MFC(Microsoft Foundation Class),配合C++,还是不错的。

Windows API && C - 最早的开发Windows GUI程序的思路。用C语言直接调用Windows操作系统提供的API函数来开发,程序员处理Windows消息。经历过这段开发时期的程序员一般对底层比较清楚,要了解Windows操作系统的工作原理。

MFC && C++ - Microsoft Foundation Class(MFC),微软用C++封装了Win32 API, C++程序员通过使用MFC类库来开发,面向对象的编程方法。

后来,随着.Net平台的壮大和发展,微软为了简化开发门槛,把Windows API封装成了控件,诞生了我们今天要说的Windows窗体(Windows Form)这项技术,并且搭配全新的C#语言使用。

但是,随着应用的复杂话,微软也意识到了WinForm的一些弊端,于是从.Net Framework 3.0开始,推出了能支持MVVM模式,并靠数据驱动界面的新框架WPF(Windows Presentation Foundation),相较于前辈的消息驱动、事件驱动模式,基于数据驱动的开发方式大大提高了编程效率,也更利于多工种和团队协作。

虽然,后续伴随着Windows 10发布了全新的UWP、Windows 11发布了WinUI、MAUI等框架,但是都是继续建立在数据驱动的开发思想上的。

到了2021年了,随着.Net Core的发展和生态需要,微软回头来,让WinForm这么一门较老的客户端窗体框架,老树发芽,唤来新生,大概是从.Net Core 3.1开始,WinForm正式被纳入.Net Core支持的范畴。

所以,今天的角度来看WinForms,其实际上具备两个实现版本:

1. 托管于GitHub上的开放源代码实现。

https://github.com/dotnet/winforms

此版本在.NET 5.NET Core 3.1上运行。Windows窗体可视化设计器最低要求Visual Studio 2019版本16.8预览版。

2. 受Visual Studio 2019和Visual Studio 2017支持的.NET Framework 4实现。

.NET Framework 4是仅限Windows的.NET版本,被视为一个Windows操作系统组件。此版本的Windows窗体随.NET Framework一起分发。

创建WinForms应用

https://github.com/TaylorShi/HelloWinForm

基于命令行的创建

1. 新建名为HelloWinForm的解决方案

dotnet new sln -o HelloWinForm

image

2. 切换到HelloWinForm目录

cd .\HelloWinForm\

3. 创建名为demoForWinForm的WinFroms项目

dotnet new winforms -o demoForWinForm

image

4. 添加demoForWinForm到解决方案

dotnet sln add .\demoForWinForm\demoForWinForm.csproj

image

5. 切换到demoForWinForm目录

cd .\demoForWinForm\

image

6. 运行demoForWinForm项目

dotnet watch run

image

7. 查看运行效果

image

8. 检查demoForWinForm.csproj配置

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows</TargetFramework>
    <Nullable>enable</Nullable>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>

</Project>

image

基于Visual Studio的创建

1. 打开Visual Studio创建新项目

image

2. 搜索WinForms项目模板

image

这里可以看到Windows窗体应用(.Net Framework)就是.Net Framework框架的项目模板,而Windows Form App就是.Net Core框架的项目模板。

3. 选择Windows Form App项目模板进行创建配置,配置项目名为HelloWinForm

image

4. 选择Framework版本,暂时选择默认的.Net 5.0预览

image

5. 创建并打开解决方案

image

6. 运行项目并查看效果

image

image

7. 检查HelloWinForm.csproj配置

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows</TargetFramework>
    <Nullable>enable</Nullable>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>

</Project>

image

参考

posted @ 2021-08-23 12:00  TaylorShi  阅读(7639)  评论(5编辑  收藏  举报