什么是WinForm
https://docs.microsoft.com/zh-cn/dotnet/desktop/winforms
Windows窗体(Windows Form
),简称WinForms
,是一个可创建适用于Windows的丰富桌面客户端应用的UI框架。Windows窗体开发平台支持广泛的应用开发功能,包括控件、图形、数据绑定和用户输入。Windows 窗体采用Visual Studio中的拖放式可视化设计器,可轻松创建Windows窗体应用。
WinForm的来世今生
说起WinForm,其实很多现在的程序员已经是不用它了,原因是其实它已经是老爷爷了,微软推出WinForms
之后,继而推出了WPF
、UWP
、WinUI
、MAUI
等更新的客户端应用框架。
但是论资历,在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
2. 切换到HelloWinForm目录
cd .\HelloWinForm\
3. 创建名为demoForWinForm的WinFroms项目
dotnet new winforms -o demoForWinForm
4. 添加demoForWinForm到解决方案
dotnet sln add .\demoForWinForm\demoForWinForm.csproj
5. 切换到demoForWinForm目录
cd .\demoForWinForm\
6. 运行demoForWinForm项目
dotnet watch run
7. 查看运行效果
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>
基于Visual Studio的创建
1. 打开Visual Studio创建新项目
2. 搜索WinForms项目模板
这里可以看到Windows窗体应用(.Net Framework)
就是.Net Framework
框架的项目模板,而Windows Form App
就是.Net Core框架的项目模板。
3. 选择Windows Form App项目模板进行创建配置,配置项目名为HelloWinForm
4. 选择Framework版本,暂时选择默认的.Net 5.0预览
5. 创建并打开解决方案
6. 运行项目并查看效果
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>
参考
Windows 窗体文档
桌面指南(Windows 窗体 .NET)
教程:创建新的 WinForms 应用(Windows 窗体 .NET)
.NET Core 3.0 和 3.1 的 Windows 窗体中断性变更
使用.net core3.0 正式版创建Winform程序
Introducing .NET Core (2021) by Microsoft.NET
WPF的由来