什么是WinForm
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上的開放源代碼實現。
此版本在.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應用
基於命令行的創建
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>